我有两个内置的应用程序图标(免费和高级),是否可以在应用内购买成功完成后以编程方式将免费图标替换为高级图标?
8 回答
针对这种情况有一个新的解决方案。
您可以使用
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>
不,图标是在应用程序包中指定的,您不得更改。如果您更改它,您的应用程序签名将变为无效(不是相同的校验和),因此您的应用程序将不再运行。
不,绝对不是。应用程序包的那部分是只读的,也是代码签名的。
关于 TapOne 应用程序的答案是完全不同的。它为网站或电话号码创建“网络剪辑”。例如,要为您的网站创建一个 iPhone 图标,您可以在网页标题中添加如下内容:
<link rel="apple-touch-icon" href="/your-custom-icon.png"/>
TapOne 和网络剪辑不会以编程方式更改应用程序包中的图标。
更新:从 iOS 10.3 开始,您可以通过在 info.plist 中定义备用图标来更新应用程序图标。
在Apple 文档中查看更多信息
这是不可能的。应用程序图标不是动态的,只能通过 iTunes Connect 向您的应用程序提交新更新来更新它们。有关更多信息,请阅读 iTunes Connect 开发人员指南。https://itunesconnect.apple.com/docs/iTunesConnect_DeveloperGuide.pdf
恐怕不是; 可以肯定的是,不允许有条件地更改应用程序图标。
如果没有越狱的手机,我认为这是不可能的。应用程序图标包含在应用程序包中,您不能对其进行写入。
我不同意上面的所有答案。请尝试应用程序“OneTap”,它可以让您制作自己的新应用程序图标。OneTap 应用在 Itune 上是免费的。