忐忑悲壮路,心酸出坑史——记第一次iOS艰辛上架路
一、前言
应用uni-app
开发完APP后,面临着ios上架问题。理想是好的,无奈现实太骨感!ios上架遇到了种种问题,提交上架申请一次又一次,现将上架过程中遇到的问题及解决方案进行梳理,得出此文。
二、上架问题汇总
2.1 Guideline 5.1.1 - Legal - Privacy - Data Collection and Storage We noticed that your app requests the user’s consent to access the camera, but doesn’t sufficiently explain the use of the camera in the purpose string.
解决方案详参博文🔎《跨平台应用开发进阶(二十五) :uni-app实现IOS云打包解决IOS提交审核相册等隐私描述语导致审核失败问题》
2.1.1 拓展学习 权限汇总
2.2 ERROR ITMS-90717: “Invalid App Store Icon. The App Store Icon in the asset catalog in ‘HBuilder.app’ can’t be transparent nor contain an alpha channel.”
Notes: 打包时使用的App Icon不满足要求,请美工协助提供正确的1024 * 1024
icon。
2.3 上架应用报“为 ‘xxx.ipa’创建.itmsp失败,通过网络服务查询应用程序信息失败
Notes:第一次出现该问题时,通过修改Build version值为字符串形式得到解决,后来重新上架时,又爆出以上错误信息,但是查看Build version值确实为字符串形式!通过更换Build version值,问题得到解决,具体原因未知!
2.4 ERROR ITMS-90035: "Invalid Signature.
A sealed resource is missing or invalid. The file at path [HBuilder.app/HBuilder] is not properly signed. Make sure you have signed your application with a distribution certificate, not an ad hoc certificate or a development certificate. Verify that the code signing settings in Xcode are correct at the target level (which override any values at the project level). Additionally, make sure the bundle you are uploading was built using a Release target in Xcode, not a Simulator target. If you are certain your code signing settings are correct, choose “Clean All” in Xcode, delete the “build” directory in the Finder, and rebuild your release target. For more information, please consult https://developer.apple.com/library/ios/documentation/Security/Conceptual/CodeSigningGuide/Introduction/Introduction.html"
Notes:通过报错信息可知,待上架app打包时未使用发布证书。应用发布证书打包后,问题得到解决!
2.5 Web Service request failed with a status of: HTTP/1.1 504 Gateway Time-out, will retry in 5 seconds.
X-Apple-Jingle-Correlation-Key: QMUQG2PUVGKPLCM75BDKUK7USU
Notes:交付时预警信息,应该是后台环境不稳定导致的,若确定后台服务无问题,该问题可忽略。
2.6 Guideline 2.1 - Information Needed
We’re looking forward to reviewing your app, but we were unable to sign in with the following demo account credentials you provided in App Store Connect:
Notes:提供给ios审核员的测试帐号信息不可用,需要提供可登录APP的正确用户信息,建议提交前自己使用该测试帐号进行充分测试。
2.7 Guideline 2.2 - Performance - Beta Testing
Your app appears to be a pre-release, test, or trial version with a limited feature set. Apps that are created for test or trial purposes are not appropriate for the App Store.
To resolve this issue, please complete, remove, or fully configure any partially implemented features. If your app is not ready for public distribution, use TestFlight to test your app.
Notes:需要检查上架提交操作选项,是否包含测试词汇,若存在,则删除掉beta、测试版等词汇。
2.8 Guideline 2.3 - Guideline 2.3 - Performance - Accurate Metadata
We noticed that your app’s metadata includes the following information, which is not relevant to the app’s content and functionality:
测试版本,提供基础功能测试可用性。
Next Steps
To resolve this issue, please revise or remove this content from your app’s metadata. For resources on metadata best practices, you may want to review the App Store Product Page information available on the Apple Developer website.
Notes: 应该是提交审核时填写的应用信息有问题。
2.9 Guideline 2.3.3 - Performance - Accurate Metadata
We noticed that your screenshots do not sufficiently show your app in use. Specifically, your 6.5-inch iPhone and 5.5-inch iPhone screenshots do not show the current version of the app in use.
To help users understand your app’s functionality and value, your screenshots should highlight your app’s core concept. For example, a gaming app should feature screenshots that capture actual gameplay within the app.
Notes:以上问题是由于截图是商城图片,但是有按照最新版本更新,替换商城图片即可。
要提交的审核资料图片等信息与实际提交的APP截图相一致,否则会被拒掉。
2.10 Guideline 2.1 - Information Needed
We’re looking forward to completing the review of your app, but we need more information to continue.
Next Steps
Please provide detailed answers to the following questions in your reply to this message in App Store Connect:
-Please clarify where we can locate the background audio feature in your app. Please provide a demo video clearly showing your app having persistent audio playing when the app is running in the background if we are not able to use it in the app.
Notes: 苹果审核员要求举证音频后台播放的应用功能,复核项目中配置的软件权限,去除音频后台播放权限即可。
应该是iOS选择了Backgroud Mode - Audio,AirPlay权限,一般这个权限是App退到后台时,仍播放音声需要的权限。
一般是QQ音乐这种音乐软件,或者腾讯会议,Zoom会议这类会议类App 需要这样的权限,目的是App退到后台时仍播放声音。
苹果对这个权限管理的比较严,因为获得这个权限后,App退到后台不会被冻结。
APP可以自查一下,是否需要类似的权限,如果不需要这种权限,取建议消勾选这个权限重新提交。
2.11 Guideline 2.1 - Performance - App Completeness
We discovered one or more bugs in your app. Specifically, when trying to log in the app, an error message displayed, the app was unable to proceed to the next page. Please review the details below and complete the next steps.
Review device details:
- Device type: iPad
- OS version: iOS 15.5
Notes: 用户使用提供的测试帐号无法登录APP,但是亲测可以的。考虑到苹果审核员工作场所可能在国外(美国加利福尼亚州、
爱尔兰科克),也有可能在上海,可通过访问IP得知审核员所在国家,国外的话,由于服务器测的安全策略,导致境外IP无法访问或出现访问延迟、抖动问题。
故考虑采取增大请求响应等待时间及域名/IP网络测试。
2.11.1 uni-app设置请求超时时间
uni-app
默认超时设置为60S
,考虑到网络延迟、抖动等问题,可以延长请求超时时间。
在manifest.json
文件设置请求超时的时间:
"networkTimeout" : {
"request" : 120000 // 设置请求超时时间为2min
},
2.11.2 使用网络模拟器测试
IP测试:
域名测试:
根据测试结果可知,域名/IP解析存在差异性,而且通过多次点击,发现结果也不一样,说服力不是很大。
2.11.3 ios 预审查
考虑到ios上架审核的困难性,很多公司在App Store真正上架前,会进行iOS预审,所谓 iOS预审主要是在上传APP store 前预先通过一些平台扫描工具提前预审核一下,找出问题,防止真正上线时苹果审核失败。
翻了很多信息,发现大家使用较多的是腾讯的wetest和QuickSDK,但均发现服务不可用。
2.12 Guideline 2.1 - Information Needed
We’re looking forward to completing the review of your app, but we need more information to continue.
Next Steps
Please provide detailed answers to the following questions in your reply to this message in App Store Connect:
- What service can users get from your app after successful?
- Please provide a demo account that has passed.
Notes: 进行人工审核时,审核员会测试APP中涉及的流程操作,需要APP提交者提供测试案例,最好提供操作视频供审核员参考。
2.13 上架审核 iOS 隐私信息访问的许可描述
iOS 上架非常的严格,之所以要描述 ios 使用需要用到以下的权限原因,是因为 appstore 要求的,若不描述的话,就不能审核通过。
- 通讯录
NSContactsUsageDescription
- 麦克风
NSMicrophoneUsageDescription
- 相机
NSCameraUsageDescription
- 相册(访问)
NSPhotoLibraryUsageDescription
- 相册(保存图片到相册)
NSPhotoLibraryAddUsageDescription
- 定位(使用时获取地理位置)
NSLocationWhenInUseUsageDescription
- 定位(持续获取地理位置)
NSLocationAlwaysUsageDescription
- 定位(iOS11.3及以上版本)
NSLocationAlwaysAndWhenInUseUsageDescription
- 蓝牙
NSBluetoothPeripheralUsageDescription
用 Uniapp 开发的应用,没有所谓的 info.plist
文件,我们可以直接修改 manifest.json
文件的内容即可。
"ios" : {
"idfa" : false,
"privacyDescription" : {
"NSLocationWhenInUseUsageDescription" : "该应用需要你的地理位置,以便为你提供当前位置信息",
"NSLocationAlwaysAndWhenInUseUsageDescription" : "该应用需要持续获取用户地理位置,以便为你进行导航",
"NSPhotoLibraryUsageDescription" : "该应用需要读取你的相册,以便为你编辑用户信息",
"NSPhotoLibraryAddUsageDescription" : "该应用需要读取你的相册,以便为你编辑用户信息",
"NSCameraUsageDescription" : "该应用需要你的相机,以便你拍摄上传用户信息",
"NSMicrophoneUsageDescription" : "该应用需要使用你的麦克风,以便订单语音播放",
"NSContactsUsageDescription" : "该应用需要读取你的通讯录,以便用户与买家联系",
"NSLocationAlwaysUsageDescription" : "该应用需要你的地理位置,以便为你提供当前位置信息",
"NSCalendarsUsageDescription" : "该应用需要获取你的日历,以便更好的体验",
"NSRemindersUsageDescription" : "为了更好的体验,后面请同意授权选项"
}
},
可以直接选择 manifest.json
的 App 模块权限配置,以图形化界面的方式编辑更方便。
三、App Store Review 探秘
3.1 组织职能
App Store 支持 81种不同的语言,App Store 每会周有 10 万次 App 提交审核,目前审核团队有 500 人。
App Store应用审核团队的人员分工有很多,分为常规审核、新发布功能审核等;有涉及到对内容的理解,比如说版权,法律等;涉及到用户利益,比如说付费,IAP,隐私;还有开发者账户等。
3.2 审核流程
App Store 的审核流程总共分为静态分析(Static Analysis
)、动态分析(Dynamic Analysis
)、MOZART(莫扎特)以及人工审核(Magellan
,麦哲伦)。
其中,静态分析包括:
DT App Analyer
(DT应用分析器)App Similarity
(应用相似度)Z Strings
(Z 字符串)App Transparency
(应用透明度)
静态分析检查应用程序的大小,权利,应用程序内购买、关键字、说明等等。
静态分析原理如下图:
动态分析工流程,包括:
App Transparency
(应用透明度)Mercury
动态测试包括从电池使用到文件系统访问以及对访问照相机硬件和麦克风之类的设备硬件的隐私请求的所有内容。
Mercury
工具使 Apple 可以查看内部应用程序以检查隐藏的代码或滥用情况,还有称为 “Magellan
”(麦哲伦)和 “Columbus
”(哥伦布)的其他审阅工具。
通过刚刚的静态分析+ 动态分析 = 应用签名。
审核时,就可以对比数据库中的应用签名,如果相同就是重复应用。
人工审核员的工作台:一台 iMac、MacBook Pro、多台 iOS 设备以及游戏控制器等等。
ios APP开发者提交处理流程如下:
四、Review建议
苹果要求App兼容IPv6网络(6月1号以后上架/更新的App,必须兼容IPv6),因此,提审前需确保应用在IPv6网络下可正常登录(IPv6网络可按照苹果官网提供指导进行部署)。除此之外,美国VPN网络也不能忽视。因为苹果的审核团队在美国、英国、中国,他们在国外进行审核时,使用的是美国、英国网络,跨洲际的网络连接,难免会出现时延大、抖动、丢包等网络问题,为了提前验证App后台服务器基于此场景下的反应,美国、英国VPN来模拟苹果审核团队的访问App,可以提前爆露一些问题。
五、拓展阅读
- 《域名、IP解析》
- 点赞
- 收藏
- 关注作者
评论(0)