Xcode配置多套App图标的⽅法---AppStore图标ABTest实践
关注后回复 “进” ,拉你进程序员交流
最近苹果推出 App Store 产品页的新功能,其中在 app 产品页的不同版本上使⽤不同的图标,通过 A/B
Test 出效果最佳的版本。但是苹果⽂档并没有给出详细的教程,怎么在 Xcode 中集成多套图标呢?这就是本⽂要讲解的内容,适合 iOS 技术开发同学阅读。
⼀、背景
2021 年 12 ⽉ 08 ⽇,苹果推出 App Store 产品页的新功能[1],在 App Store 中开发者可以针对 app 产品页的不同版本上使⽤不同的图标、截屏和 app 预览,通过 A/B Test 出效果最佳的版本。
有部分读取可能知道我们在之前的⽂章,当时留下这个⼀个问题:测试不同的 app 图标,提交新图标的 app 审核流程是怎么样?
在Get ready to optimize your App Store product page - WWDC21[2]视频中有这样⼀段话:
And remember, to test a variation of your app icon, you'll need to include the icon assets in the binary of your app version that is currently live, so make sure to prepare your app releases accordingly. 请记住,要测试 app 图标的变体,您需要将图标集包含在当前上线的 app 版本的⼆进制⽂件中,因此请确保相应地准备应⽤版本。
1.1 Xcode 集成多套测试 App 图标
怎么包含不同的图标集到 app 中呢?⾸先,想到的是 Xcode 13 beta 版本,然后在苹果的⽂档Xcode 13 Beta 3 Release Notes | Apple Developer Documentation[3]中到这样⼀段话:
Asset Catalogs
New Features
At runtime, your app can now use iOS app icon assets from its asset catalog as alternate app icons. A new build setting, “Include all app icon assets,” controls whether Xcode includes all app icon sets in the built product. When the setting is disabled, Xcode includes the primary app icon, along with the icons specified in the new setting, “Alternate app icon sets.” The asset catalog compiler inserts the appropriate content into the Info.plist of the built product.
(33600923) 在运⾏时,您的 app 现在可以使⽤其资产⽬录中的 iOS app 图标资产作为备⽤ app 图标。新的构建设置“包括所有app 图标资产”控制 Xcode 是否包含构建产品中的所有 app 图标集。当该设置被禁⽤时,Xcode 包括主 app 图标,以及在新设置“备⽤ app 图标集”中指定的图标。资产⽬录编译器将适当的内容插⼊到构建产品的 Info.plist 中。(33600923)
先说结论:实现多套App图标集成,是要依赖Xcode 13!Xcode 13!Xcode 13!
⼆、正⽂
在 Xcode 13 之前,如果要实现 iOS App 动态切换图标,需要在 Info.plist 中添加CFBundleAlternatelcons相关字段来声明对应的备⽤图标。如果要多套 App 图标,那么需要添加很多标签,不够直观和⾼效。
所以,在 Xcode 13 开始,可能通过项⽬的assets⾥创建 AppIcon 图标模板的形式,直观⼜⽅便管理图标。
2.1 如何添加多套 App 图标
⾸先,我们直接来说⼀下怎么做,其实也不复杂。最后⽂章,在来总结⼀下注意事项。
跟添加 App 图标⼀样,把所有需要的图标集都添加到assets中就可以。
然后将Include all app icon assets改为YES。(注意,需要 Xcode 13 以上才有这个字段!)
选项Include all app icon assets配置的作⽤是打包时决定 Asset Catalogs 编译器要不要把所有的备⽤图标也编译到 asset 集中。
所以,简单来总结:
1. 使⽤ Xcode 13
2. 在assets创建多套测试的图标,并添加对应的图标
3. 在Include all app icon assets设置为YSE
2.2 原理分析解答
如何验证多套图标是否添加成功
要验证是否成功,就要知道 Xcode 做了什么。将Include all app icon assets改为YES,Xcode 做了⼏件事:把每套 icon 的 60x60@2x 和 60x60@3x 两张 iOS App 图标打包到Assets.car⽂件中
把每套 icon 的 60x60@2x 和 60x60@3x 两张 iOS App 图标放到包体⽬录中
在 Info.plist 的CFBundleAlternateIcons字段下添加备⽤图标为名字的 key-value
所以,从这 3 个⽅⾯可以验证。
打包后,可以查看包体下的 Info.plist ⽂件下 Icon files (iOS 5) 配置下是否有CFBundleAlternateIcons对应的多套图标的名字:
查看Assets.car⽂件⾥的是否包含图标也可以验证,这⾥就不重复了。
只使⽤部分备⽤的图标
可以通过Alternate App Icon Sets设置只使⽤的备份图标。前提条件时,Include all app icon assets要设置为NO。
通过上图,就可以指定只设置 3 套备⽤图标。需要特别注意:
icon图标库填写的图标集名字,⼀定要与Assets.car⾥的名字⼀致
如果填写了错误或者不存在的名字,Xcode 会忽视并且不会报错
所以,可以通过上⾯说到的验证⽅法确定名字没有填写错。
注:当Include all app icon assets要设置为YSE时,Xcode 会忽视Alternate App Icon Sets设置的内容。
不要⽤有透明的图标
如上图所⽰,使⽤有透明区域的图⽚,最终显⽰的图标,背景将会变成⿊⾊:
1024 图标不要⽤ JPG 格式
1024x1024 的商店图⽚,作为主图标时可以⽤jpg。如果⽤ png 格式,则不能有透明区域,否则上传 ipa 包体时会报错,⽆法上报。
⽽备⽤的图标,则不能使⽤ jpg!不能使⽤ jpg!不能使⽤ jpg!
上报时会报错:
Dear Developer,
We identified one or more issues with a recent delivery for your app, "⽃罗⼤陆:魂师对决" 2.3.1 (2.3.
1). Please correct the following issues, then upload again. ITMS-90033: Invalid Image - - Image found at the path 'TestAIcon-1x~marketing-0-7-0-85-220.jpeg' referenced under key 'CFBundleAlternateIcons' is not a valid 所以,备⽤图标的 1024x1024 ⼀定要⽤ PNG 格式!
代码进⾏图标切换
最后,因为已经配图和验证了备⽤图⽚已经⽣效,那么也可以⽤代码来调⽤,切换备⽤图标测试:
设置某个备⽤图标时,传⼊图标集的名字就可以,⼀句代码:
UIApplication.shared.setAlternateIconName("Rainbow")
设置回默认图标的代码:
UIApplication.shared.setAlternateIconName(nil)
最后,我们将以上配置⽰例,上传到 GitHub 上,提供了 ObjC、Swift、SwiftUI 的版本,⼤家可以参考。
37iOS/Assets-Alternate-App-Icons - GitHub[4]
更灵活的配置
Include all app icon assets在 Xcode 的对应 buildSettings 的名字
是ASSETCATALOG_COMPILER_INCLUDE_ALL_APPICON_ASSETS,⽽Alternate App Icon Sets对应的字段
是ASSETCATALOG_COMPILER_ALTERNATE_APPICON_NAMES。还有⼀个设置 App 主图标的字段Primary App Icon Set Name对应是ASSETCATALOG_COMPILER_APPICON_NAME。
其实这些字段,在 Xcode 13 有映射成了 GUI 界⾯:
这有什么好处?通过多套图标测试后的数据,可能需要使⽤某个备⽤图标设为主图标,通过General⾯板上,可以快速把备⽤的图标集改成主图标。
苹果后台的配置
需要注意,包含多套图标的包,需要按包体送审的流程过审后,才能在苹果后台产品页优化标签下看到多套图标,App Icon分标签下:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论