官方
iOS10.3新增了可以让开发者去更改app的icon,接下来看看怎么更改 。官方API给的东西很少,只是介绍了一个实例方法:
open func setAlternateIconName(_ alternateIconName: String?, completionHandler: ((Error?) -> Swift.Void)? = nil)根据传入的参数可知,我们只需要传入备用icon名字即可,然后在回调里面拿到修改的结果,成功的话error为空,不成功则返回相应的错误信息(可以使用error!.localizedDescription来打印查看错误信息) 。如果失败的话 , alternateIconName属性不变 。这里注意:
如果当期app使用的icon是备用的icon,那么这个属性的值就是当前icon的名字 , 这个名字是在Info.plist里面设置的名字,如果当前app展示的是主要(primary)的icon,那么这个值为nil 。这里需要注意两点:
当前设备的系统版本 。这里的所有api都是10.3才能使用的 。
当前app是否支持备用icon 。使用supportsAlertnateIcons属性判断 。只有为true的使用才能去更改 。API中还有一句话比较关键:
你必须在Info.plist里面使用CFBundleIcons声明当前app的primary和alternate icon 。这里如果不了解可以往下看,先忽略 。具体的Info.plist里面的字段含义这里就不在一一说明,详情可了解这里 。
总之官方API上面我只找到了这么多 。然而给我的感觉反倒一脸懵逼,完全搞不懂下面的Info.plist怎么设置 。因此有了下面的序文 。
个人理解
在刚才的Info.plist Key介绍里面 , 我们先看一下其他的小知识 。我们都知道在Info.plist里面有个Bundle display name,也就是设置app在桌面显示的名字 。此时如果我们先不管这个key,我们继续在Info.plist里面添加CFBundleDisplayName , 你会收到这样一个提示:
The key you entered is already present in the dictionary.do you want to replace the existing key/value pair?但是看一下Info.plist字典中的key,并没有CFBundleDisplayName,替换后发现 , 原来它就是Bundle display name 。也就是说,Info.plist里面的Key在Xcode中显示的并不是Key,而是Xcode name 。如下图:
文章插图
这个是从官方API上截的图,其实这些Key都有对应的Xcode name,也就是在Xcodes里面我们能看到的key 。其实也很简单,如果你把Info.plist使用源码形式打开(右击—>Open as —>Source code),你就会发现这里写的key就是上面列出来的key 。
先看看我在网上查资料设置的Info.plist:
文章插图
这里的CFBundleIconFiles是备用icon的名字 。下面的Primary Icon是默认的icon 。源代码就是:
文章插图
其中CFBundleIcons对应的就是Icon files(iOS 5),CFBundleIconFiles就是Primary Icon 。先看一下CFBundleAlternateIcons 。这个CFBundleAlternateIcons key所对应的value在iOS里面是一个字典,例如:
文章插图
每个字典的key是备用icon的名字,这个也是你传入到
IApplication.shared.setAlternateIconName(iconName) { (error) in if (error != nil) { self.aler(str: (error!.localizedDescription)) }else { self.aler(str: "修改成功") } }里面的iconName 。其中的字典对应值解释如下:
文章插图
CFBundleIconFiles:这个是一个String的数组 , 里面每个元素都是icon 的名字,你可以添加多个不同大小的icon来支持iPhone,iPad 。UIPrerenderedIcon:指定应用程序的图标是否包含闪光效果(shine effect),如果icon已经有这个效果,就把这个属性设置为YES来防止系统再次添加相同效果 。如果设置为NO(默认值),iOS系统会自动添加这个效果 。然而,我并没有测试出来这个效果!!这里还要注意一下:Primary Icon的Item 0的name也可以不填写,苹果官方文档也没有具体说名字这个要怎么去填写,只是说如果你想使用CFBundlePrimaryIcon键值定义的icon,直接使用将setAlternateIconName的参数alternateIconName写成nil就行 。在属性列表里面直接不填写就行(即把AppIcon60x60删掉)
- 华为手机选购指南,华为手机应用指南
- Minecraft已经从俄罗斯区域的iOS/Android应用商店中下架
- 禁止软件访问网络 禁止应用程序访问网络
- 物联网应用领域有哪些 物联网应用领域有哪些方面
- 人工智能音箱哪个好 智能音箱应用了人工智能吗
- iOS14怎么分屏 ios14怎么分屏用两个程序
- 当前浏览器加载税务安全证书应用客户端 不成功 显示当前浏览器加载税务安全证书不成功
- 苏州大学应用技术学院怎么样 苏州大学应用技术学院官网教务管理系统
- 应用程序发生异常unknown software 应用程序异常unknownsoftwareexception
- 有六年级上册分数应用题吗 六年级上册分数应用题大全及答案