我内置了两个应用程序图标(免费和高级版),在应用程序内购买成功完成后,是否可以通过编程方式将免费图标替换为高级图标?
答案 0 :(得分:13)
不,图标是在应用程序包中指定的,您不得更改该图标。如果您更改它,您的应用程序签名将变为无效(不是相同的校验和),因此您的应用程序将不再运行。
答案 1 :(得分:10)
这种情况有一种新的解决方案。
您可以使用
setAlternateIconName(_:completionHandler:)
iOS 10.3已经推出了xcode 8.3。
更新:
用法非常简单,关键是找出plist的用法并注意你无法从xcassets加载资产(至少对我没用)。您需要将图标文件添加到项目中,并选择180x180图像以获得质量。
您需要使用"图标文件(iOS 5)",新的图标文件不起作用。
最后一件事,当您更改按钮上的图标时,它会弹出一个警告窗口,其中显示'您已更改" 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>
答案 2 :(得分:3)
不,绝对不是。应用程序包的那部分是只读的,也是代码签名的。
关于TapOne应用程序的答案完全不同。它为网站或电话号码创建“网络剪辑”。例如,要为您的网站创建iPhone图标,您可以在网页标题中添加以下内容:
<link rel="apple-touch-icon" href="/your-custom-icon.png"/>
TapOne和网络剪辑不会以编程方式更改应用程序包中的图标。
答案 3 :(得分:1)
这是不可能的。应用程序图标不是动态的,只能通过iTunes Connect向您的应用程序提交新的更新来更新它们。有关详细信息,请阅读iTunes Connect开发人员指南。 https://itunesconnect.apple.com/docs/iTunesConnect_DeveloperGuide.pdf
答案 4 :(得分:1)
更新:自iOS 10.3起,您可以通过在info.plist中定义备用图标来更新应用程序图标。
了解详情答案 5 :(得分:0)
我不敢;非常确定应用程序图标不允许有条件地更改。
答案 6 :(得分:0)
如果没有越狱手机,我认为这是不可能的。应用程序图标包含在应用程序包中,您不能写入该文件夹。
答案 7 :(得分:-1)
我不同意上面的所有答案。 请尝试应用程序“OneTap”,它将允许您制作自己的新应用程序图标。 OneTap应用程序在Itune上免费。