iOS 15如何设置User-Selectable App Icons(用户可选应用图标)
iOS 15 应用备选图标设置方案
iOS 15 并未废弃用户可选应用图标功能,无法更换大多是配置校验变严、API调用时机错误导致的,可按以下步骤排查和设置:
1 确认Info.plist配置正确
iOS 15 对CFBundleIcons相关配置的校验远严于旧版本,必须严格符合以下规则:
- 所有备选图标在
CFBundleIcons->CFBundleAlternateIcons下的条目必须完整,每个图标对应字典中必须包含CFBundleIconFiles数组,数组中填写所有尺寸的图标文件名/Asset Catalog中的图标集名,不要加.png后缀,大小写完全匹配 - 如果是将图标文件直接放在项目根目录,要确认所有图标文件的「Target Membership」已勾选对应应用目标,编译后能在.app包中找到对应文件
- 不要遗漏
CFBundlePrimaryIcon条目,就算你不需要修改主图标也必须完整配置
2 正确调用更换API
iOS 15 收紧了API调用权限,必须满足以下条件:
- 调用前必须先判断
UIApplication.shared.supportsAlternateIcons是否为true,部分受MDM管理、企业签名的设备会直接禁用该功能 - 必须在应用完全进入前台激活状态后调用,不能在
application(_:didFinishLaunchingWithOptions:)中同步调用,也不能在后台状态调用 - 更换图标如果不需要展示系统弹窗,可以在completionHandler中处理错误即可,系统原生弹窗无法自定义
3 代码示例(Swift)
guard UIApplication.shared.supportsAlternateIcons else { // 设备不支持备选图标 return } // 传入nil则恢复为主图标 UIApplication.shared.setAlternateIconName("你的备选图标名") { error in if let error = error { print("更换图标失败: \(error.localizedDescription)") } else { print("更换图标成功") } }
常见错误排查
如果调用返回LSApplicationWorkspaceErrorDomain error -100错误,100%是配置不匹配问题,逐一检查:
- Info.plist中写的图标名和实际文件名/Asset图标集名完全一致
- 所有尺寸的图标都已正确导入,没有遗漏2x、3x尺寸
- 图标文件没有放在嵌套文件夹中,如果放在子目录要在
CFBundleIconFiles中写上相对路径
内容的提问来源于stack exchange,提问作者reacct
相关产品推荐
相关产品推荐

