Thay đổi icon cho App IOS mà không cần submit
Bài đăng này đã không được cập nhật trong 7 năm
Mở đầu
Gần đây chúng ta thường thấy có nhiều App thay đổi icon
theo mùa hay event nào đó. Từ trước đến giờ, trên iOS để thay đổi icon của app chúng ta bắt buộc phải submit lên Apple Store, tuy nhiên từ iOS10.3 ta không cần phải submit mà vẫn có thể thay đổi được icon ^^. Hình dưới đây mình đã thử thay đổi icon từ Twitter
sang Facebook
.
Alternate Icons
Ta add thêm Extension
của UIApplication
vào như dưới đây
extension UIApplication {
// If false, alternate icons are not supported for the current process.
@available(iOS 10.3, *)
open var supportsAlternateIcons: Bool { get }
// Pass `nil` to use the primary application icon. The completion handler will be invoked asynchronously on an arbitrary background queue; be sure to dispatch back to the main queue before doing any further UI work.
@available(iOS 10.3, *)
open func setAlternateIconName(_ alternateIconName: String?, completionHandler: ((Error?) -> Swift.Void)? = nil)
// If `nil`, the primary application icon is being used.
@available(iOS 10.3, *)
open var alternateIconName: String? { get }
}
Ngoài ra, do việc thay đổi icon bị hạn chế chỉ ở foreground nên sau khi thay đổi icon sẽ được thông báo dialog cho user.
Thực hiện
- Đăng ký Icon
- Đăng ký vào một số hạng mục cần thiết ở file Info.plist
- Thực hiện xử lý thay đổi Icon
1. Đăng ký icon
Do ở assert
catalogue sử dụng icon không được "nuột" cho lắm nên mình đã lưu luôn ở trong project như hình.
2. Đăng ký vào một số hạng mục cần thiết ở file Info.plist
- Sử dụng
Add row
để thêm dòng mới vào, sau đó chọnIcon files (iOS 5)
- Primary Icon -> Icon files -> Item0 ở đây nhập tên default cho icon vào
- Để thay đổi được icon ta thêm
CFBundleAlternateIcons
vào - CFBundleAlternateIcons -> nhập name tuỳ ý
- CFBundleAlternateIcons -> name (vừa nhập) -> CFBundleIconFiles -> Item0 : ở đây ta nhập name muốn đổi vào
Ở đây mình nhập name là facebook Icon và Instagram Icon. giá trị này sẽ được sử dụng trong source code
3. Thực hiện xử lý thay đổi Icon
Ta thực hiện một đoạn xử lý nhỏ như phần code ở dưới đây viết trong file ViewController.swift
đó là khi nhấn vào Button thì icon sẽ thay đổi:
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
}
@IBAction func didTapChangeIcon(_ sender: UIButton) {
// Info.plist で設定した値
let iconName = "facebook Icon"
UIApplication.shared.setAlternateIconName(iconName) { error in
if let error = error {
print(error.localizedDescription)
}
print("Done!")
}
}
}
Tổng kết
Chú ý là những app có icon động như đồng hồ hay Calendar thì ta không thể thay đổi được mà chỉ có thể thay đổi icon của app theo vd như mùa, event ... (theo hiệu biết hạn hẹp của mình)
Tham khảo : Qiita
All rights reserved