iOS15 切换上架App图标的最新方案

·  阅读 12427
iOS15 切换上架App图标的最新方案

1. 前言

Xcode13以及iOS15发布之前,Apple其实已经支持在应用内切换图标了,通过将不同的ICON图标打到包内,并手动配置,然后通过业务代码修改ICON。当时的应用场景主要是提供给用户主动切换不同的图标,更换成自己喜欢的图标风格。

iOS15之后,苹果支持将上线AppStore的包进行图标切换,目的是根据不同的图标判断用户转化。因此在Xcode13之后,多ICON的设置方法由之前的手动配置,改成了更加方便的配置方式。

因为文章在iOS15之前就整理好了,新的方案出来后,肯定是新的方案的应用场景更广,也更方便开发者操作。因此,以下我将分别介绍两种方案,但还是建议开发者使用最新的方案。

2.旧方案:手动通过添加Info.plist字段来配置

此方案为iOS15之前的旧方案,适用于“不需要通过App Store切换图标”的场景,Xcode13以下的版本可以这样使用。

1.Info.plist添加如下配置:

<key>CFBundleIcons</key>
<dict>
	<key>CFBundleAlternateIcons</key>
	<dict>
		<key>DemoIcon</key>
		<dict>
			<key>CFBundleIconFiles</key>
			<array>
				<string>DemoIcon-20</string>
				<string>DemoIcon-29</string>
				<string>DemoIcon-40</string>
				<string>DemoIcon-60</string>
			</array>
			<key>UIPrerenderedIcon</key>
			<false/>
		</dict>
	</dict>
</dict>
<key>CFBundleIcons~ipad</key>
<dict>
	<key>CFBundleAlternateIcons</key>
	<dict>
		<key>DemoIcon</key>
		<dict>
			<key>CFBundleIconFiles</key>
			<array>
				<string>DemoIcon-29</string>
				<string>DemoIcon-40</string>
				<string>DemoIcon-60</string>
				<string>DemoIcon-76</string>
				<string>DemoIcon-83.5</string>
			</array>
			<key>UIPrerenderedIcon</key>
			<false/>
		</dict>
	</dict>
</dict>
  • 如果要配置多套ICON,那么需要添加不同名字、同规模尺寸的图片,然后在Info.plist的CFBundleAlternateIcons内添加新的一组数据。
  • Info.plist添加了iPad和iPhone的配置。如果只需要适配iPhone/iPad,那么只需要配置iPhone/iPad的即可。

2.在项目内添加对应尺寸的图片(添加图片,打包后,图片应该在app的根目录下):

添加的图片要求跟默认的ICON一样,不能有透明底(圆角),不能有alpha通道。     

3.(代码内测试)测试更换ICON功能:

[[UIApplication sharedApplication] setAlternateIconName:@"DemoIcon" completionHandler:^(NSError * _Nullable error) {
    if (error != nil) {
        NSLog(@"set alternative icon error:%@", error.localizedDescription);
    }
}];

如果弹出更换成功的提示,说明更换成功;反之则报错。

78943CE5-51C0-4A7A-B2EC-1ED89E67E5B5.png

如果需要将ICON恢复到默认的,那么调用如下代码:

[[UIApplication sharedApplication] setAlternateIconName:nil completionHandler:nil];

PS:

1.注意名称。图片的名称需要跟Info.plist里的CFBundleIconFiles配置的名称匹配;setAlternateIconName:的参数,需要跟Info.plist里的CFBundleAlternateIcons配置的key相同。

3. 新方案:在assets内新增图标项目

此方案适用于Xcode13及其后续版本,低于这个版本无法这样配置。

1. 向Assets.xcassets内添加一组新的ICON:

deda5c8d2eb840c48e3d3b03d0b95a42_tplv-k3u1fbpfcp-watermark.png 如上图所示添加一组新的ICON,并将ICON改一个名字(方便后面使用)。

2.在项目设置里的允许使用多套ICON:

选择项目->Build Setting->搜索Include all app icon assets,然后改为YES:

image.png

这样就已经配置完了。

本地测试ICON跟 旧方法 相同:

[[UIApplication sharedApplication] setAlternateIconName:@"Test" completionHandler:^(NSError * _Nullable error) {
    if (error != nil) {
        NSLog(@"set alternative icon error:%@", error.localizedDescription);
    }
}];

其中参数为新增的ICON组的名称(截图里的为Test)。如果弹出更换成功的提示,说明更换成功;反之则报错。

而这个实现的原理其实就是将方法一里手动设置Info.plist和添加图标文件,改为直接读取.xcassets里的ICON组,并因为设置了Include all app icon assets为YES而自动添加配置到Info.plist内。解开打包好的ipa或者打开.app可以看到,Test60x60@2x.pngTest60x60@3.png已经在包体的根目录下,并且Info.plist内有了CFBundleAlternateIcons/Test的字段:

image.png

4. 苹果后台切换ICON

添加多套ICON后,只有过审后的包才能在苹果后台切换ICON。因为苹果也会审核备选ICON是否满足审核条例。过审后,我们可以再下面页面中的 产品优化页 中进行操作:

Xcode13-Alternatelcons-10.png

具体的测试方案,可以参考苹果官方文档:配置处理方案 - App Store Connect 帮助

保留的问题:因为当前自己的App还没有上架这个功能,所以不知道这个切换图标的功能,是不是只支持iOS15版本系统上的AppStore才能看到切换的效果。

参考文档:

【1】Implementing alternate icons in iOS

【2】Xcode 配置多套 App 图标的方法 --- AppStore 图标 A/B Test 实践

分类:
iOS
标签:
分类:
iOS
标签:
收藏成功!
已添加到「」, 点击更改