有没有一种方法可以在iOS中动态更改应用程序图标?

3
我想动态更改应用程序图标。我从服务器接收到图片。如何将该图像用作替代应用程序图标。请确保答案清晰易懂。(但是据我所知,备用应用程序图标文件应在我们项目的plist文件中)。
提前致谢。

请查看此链接:https://dev59.com/w1gQ5IYBdhLWcg3wORZJ - Anbu.Karthik
谢谢回复,但我希望它是动态的。 - user3467582
2个回答

7

您无法在运行时使用从服务器下载的图像更改应用程序图标。来自文档

您必须使用应用程序的Info.plist文件的CFBundleIcons键声明应用程序的主要和备用图标。有关如何为应用程序配置备用图标的信息,请参阅Information Property List Key ReferenceCFBundleIcons键的描述。

为了动态设置应用程序图标,您必须能够在Info.plist中定义它,但是您的Info.plist包含在您的应用程序包中,并且您的应用程序包是只读的,因此您没有运行时写入访问您的Info.plist文件。因此,您无法将应用程序图标更改为在运行时动态下载的图像。


你能将info plist设置为在运行时下载的图像吗? - zumzum
我不这么认为。我相信它们需要编译到你的应用程序包中,这样iOS才知道在哪里找到它们。没有办法将其设置为特定的文件,只能在Info.plist中列出一个名称,而且我不认为iOS会检查你的应用程序的运行时可写目录。 - Michael Hulet

1
苹果推出了一项酷炫的功能,使开发人员能够以编程方式更改应用程序图标。
在苹果的API文档中,有三件值得一看的事情:
var supportsAlternateIcons: Bool { get }
var alternateIconName: String? { get }
func setAlternateIconName(String?, completionHandler: ((Error?) -> Void)? = nil)

Info.plist

现在我们只需要调用这个方法:
changeIcon(to: "icon-imageName")

参考资料: https://developer.apple.com/documentation/uikit/uiapplication/2806815-supportsalternateicons

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接