Reputation: 49
I want to change the app icon dynamically. I receive the image from the server. How do I use that image as alternative app icon. Please make sure the answer is clear. (but as I know, the alternative app icon file should be in our project plist file).
Thanks in advance.
Upvotes: 3
Views: 3144
Reputation: 87
Apple launches a cool function so that developers are able to programmatically change the app icon.
In Apple's API document, there are 3 things worth a glance:
var supportsAlternateIcons: Bool { get }
var alternateIconName: String? { get }
func setAlternateIconName(String?, completionHandler: ((Error?) -> Void)? = nil)
Now we just call the method:
changeIcon(to: "icon-imageName")
Reference: https://developer.apple.com/documentation/uikit/uiapplication/2806815-supportsalternateicons
Upvotes: 1
Reputation: 3499
You cannot change your app icon with an image downloaded from a server at runtime. From the documentation:
You must declare your app's primary and alternate icons using the
CFBundleIcons
key of your app'sInfo.plist
file. For information about how to configure alternate icons for your app, see the description of theCFBundleIcons
key in Information Property List Key Reference.
In order to dynamically set an app icon, you must be able to define it in your Info.plist
, but your Info.plist
is included in your app bundle, and your app bundle is read-only, so you do not have runtime write access to your Info.plist
file. Thus, you cannot change your app icon to an image dynamically downloaded at runtime
Upvotes: 7