ios-AppStore上架
ios-AppStore上架
前篇
- App Store Connect - https://appstoreconnect.apple.com/
前置条件
关闭真金元素, 接入 苹果支付 (iap), 并且可以支付成功.
苹果后台提供可以用于登录的 账号密码.
这个账号要严格一点, 比如 ui 显示是要手机号, 如果提供的是 邮件格式 账号, 也会被打回来.
隐私
填入隐私地址, 数据类型选择 location 和 identifies
如果 app 打包是使用了 NSUserTrackingUsageDescription 但又没有在这里勾选 userd for tracking purposes, 就用踩到这个坑[NSUserTrackingUsageDescription 错误](#NSUserTrackingUsageDescription 错误)
提交审核
打包 ipa, 使用 Transporter 上传 ipa 到商店.
AppStore 后台选择 构建版本
然后 出口合规证明信息 选择 否 (填是了 审核难度会增加)
填写改填写的信息
提交审核
审核完, 如果开了定时发布, 需要手动去发布
屏幕截图分辨率
每个尺寸 2~10 张
6.5寸 - 2688 x 1242
5.5寸 - 2208 x 1242
12.9寸 - 2732 x 2048
要求: 尽量贴近游戏运行时的截图, 否则会遇到
1 | Guideline 2.3.3 - Performance - Accurate Metadata |
审核被拒
确认上架
上架后 Apple 会发邮件来, 一般十几分钟后就可以看到
如果是 定时发布, 需要手动点一下 发布 才能发布到 AppStore
可以使用一下几种方式确认
直接打开 商店地址: https://apps.apple.com/in/app/id[apple id] (需要对应地区的 vpn 才能打开)
使用 七麦数据 查看 -
https://www.qimai.cn/app/rank/appid/[appid]/country/[地区]
如:
https://www.qimai.cn/app/rank/appid/414478124/country/cn
或者 web 页面上选择 对应的地区 + appid
使用 Safari 跳转跳转过去 -
itms-apps://itunes.apple.com/app/id[appid]
如:
itms-apps://itunes.apple.com/app/id414478124
前提是登录了对应地区的账号 (可以是测试账号, 但测试账号不能安装, 只能搜索或跳转)
踩坑
NSUserTrackingUsageDescription 错误
报错: Your app contains NSUserTrackingUsageDescription, indicating that you will request permission to track users. To update this information on your app's product page, you must indicate which data types are tracking users. If this is incorrect, update your app binary and upload a new build to App Store Connect.
意思就是 打包的 ipa 的 Info.plist 中包含了 NSUserTrackingUsageDescription
, 但是隐私策略中未勾选 用于追踪用户
解决办法: 在隐私策略中勾选一下 用于追踪用户
审核被拒, 找不到 ATT 权限请求
被拒原因: Your app uses the AppTrackingTransparency framework, but we are unable to locate the App Tracking Transparency permission request
原因是在 AppStore 隐私设置中设置了 collect data in order to track the user
所以需要弹出 att 权限请求框, 给审核人员看到
相关代码
1
2
3
4
5
6
7
8
9
10
11+(void)checkPermission:(CodeMsgFn)cb API_AVAILABLE(ios(14)){
ATTrackingManagerAuthorizationStatus status01 = [ATTrackingManager trackingAuthorizationStatus];
bool isDeny = status01 == ATTrackingManagerAuthorizationStatusRestricted || status01 == ATTrackingManagerAuthorizationStatusDenied;
if (isDeny) {
[ATTrackingManager requestTrackingAuthorizationWithCompletionHandler:^(ATTrackingManagerAuthorizationStatus status02) {
cb(ECodePermissionDenyError, [NSString stringWithFormat:@"--- no tracking permission, status02: %lu", status02]);
}];
} else {
cb(ECodeOk, @"--- tracking ok");
}
}而且 att 权限提示要有明确的指示, 不然会打回
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16Guideline 5.1.1 - Legal - Privacy - Data Collection and Storage
We noticed that your app requests the user’s consent to access the AppTrackingTransparency framework, but doesn’t sufficiently explain the use of the AppTrackingTransparency framework in the purpose string.
The purpose string on the App Tracking Transparency permission request should explain to users why you are tracking them across apps and websites owned by other companies and include a specific example of how you will use the data you collect for tracking purposes.
Next Steps
Please revise the purpose string in your app’s Info.plist file for the AppTrackingTransparency framework to explain why your app needs access.
You can modify your app's Info.plist file using the property list editor in Xcode.
Resources
- See examples of helpful, informative purpose strings.
- Review a list of relevant property list keys.正确的提示, 比如
```json
NSUserTrackingUsageDescription
Your data will be used to provide you a better and personalized ad experience.