我可以以编程方式更改应用程序图标

我有两个内置的应用程序图标(免费和高级),是否可以在应用程序内购买成功完成后以编程方式将免费图标replace为高级图标?

不,图标在应用程序包中指定,您不得更改。 如果你改变它,你的应用程序签名将变得无效(不同的校验和),因此你的应用程序将不再运行。

这种情况有一个新的解决scheme。

您可以使用

 setAlternateIconName(_:completionHandler:) 

iOS 10.3与xcode 8.3一起。

10.3 +

更新:

用法非常简单,关键是要找出plist的用法,注意你不能从xcassets加载资源(至less没有为我工作)。 您需要将您的图标文件添加到项目,并select180x180的图像质量。

你需要使用“图标文件(iOS 5)”,新的图标文件不起作用。

最后一件事情是,当您更改button上的图标时,将popup一个警报窗口,显示“您已更改”IcoTest“的图标。

在这里输入图像说明

 //ViewController.swift @IBAction func ico1Click(_ sender: Any) { if UIApplication.shared.supportsAlternateIcons{ UIApplication.shared.setAlternateIconName("Icon2", completionHandler: { (error) in print(error ?? "") }) }else{ print("NO NO") } } //Info.plist <key>CFBundleIcons</key> <dict> <key>CFBundleAlternateIcons</key> <dict> <key>Icon1</key> <dict> <key>CFBundleIconFiles</key> <array> <string>alternater1_180x180</string> </array> <key>UIPrerenderedIcon</key> <false/> </dict> <key>Icon2</key> <dict> <key>CFBundleIconFiles</key> <array> <string>alternater2_180x180</string> </array> </dict> </dict> </dict> 

不,绝对不是。 应用程序包的这一部分是只读的,并且还有代码签名。

关于TapOne应用程序的答案是完全不同的。 它创build“networking剪辑”的网站或电话号码。 例如,要为您的网站创buildiPhone图标,您可以在网页标题中添加如下内容:

 <link rel="apple-touch-icon" href="/your-custom-icon.png"/> 

这里有更多信息: https : //developer.apple.com/library/ios/documentation/AppleApplications/Reference/SafariWebContent/ConfiguringWebApplications/ConfiguringWebApplications.html

TapOne和networking剪辑不会以编程方式更改应用程序束中的图标。

这不可能。 应用程序图标不是dynamic的,只能通过iTunes Connect向您的应用程序提交新更新来更新。 有关更多信息,请阅读iTunes Connect开发人员指南。 https://itunesconnect.apple.com/docs/iTunesConnect_DeveloperGuide.pdf

更新:从iOS 10.3开始,您可以通过在info.plist中定义备用图标来更新应用程序图标。

在Apple Docs中查看更多内容

恐怕不是; 非常确定的应用程序图标是不允许有条件地改变。

如果没有越狱手机,我不认为这是可能的。 应用程序图标包含在您不允许写入的应用程序包中。

我不同意上面的所有答案。 请尝试应用程序“OneTap”,它会让你自己的新应用程序的图标。 OneTap应用程序在Itune上免费。