App Store AR 应用审核注意事项
App Store 与 Google Play 的关键差异
| 维度 | Google Play | App Store |
|---|---|---|
| 审核速度 | 自动为主,人工抽检(几小时 ~ 几天) | 全人工审核(1~2 周) |
| 规则严格度 | 相对宽松 | 严格,有专门的 AR 审核条款 |
| 隐私政策 | 强制但相对简单 | 强制且要求非常详细(App Privacy 标签) |
| AR 特有要求 | 无专门规则 | 有专门的 AR 指南(App Review Guideline 4.5) |
| 崩溃容忍 | 可以有少量崩溃 | 崩溃 = 直接拒 |
App Review Guideline 4.5:AR 应用专项规则
Apple 在 App Review Guideline 中有专门的一节讲 AR 应用:
规则 4.5.1:AR 体验必须有意义
AR 体验必须有用或有娱乐性,不能只是空壳。
- 通过:把 AR 作为功能的一部分(AR 家具预览、AR 游戏)
- 拒绝:打开后只有空白摄像头画面,AR 功能没实质内容
规则 4.5.2:不能冒充现实
不能创建让用户误以为是现实的 AR 体验,尤其是涉及金融、法律、医疗等领域。
规则 4.5.3:设备兼容声明
必须在产品页面明确说明哪些设备支持你的 AR 功能。
规则 4.5.4:不能滥用 AR 权限
摄像头权限请求前必须说明用途,不能拒绝权限请求后无法使用应用。
App Privacy 标签:最严苛的部分
App Privacy 是 Apple 要求每个 App 必须填写的隐私声明——显示在 App Store 产品页上,用户下载前就能看到。ARCore 应用必须如实填写:
数据收集声明示例
| 数据类型 | 用途 | 是否上传 |
|---|---|---|
| 摄像头 | 创建 AR 体验 | 是(Cloud Anchors / Geospatial API 需要) |
| 位置信息 | Geospatial API / VPS | 是 |
| 设备信息 | ARCore 设备兼容性检测 | 是 |
Apple 特别关注的点
如果你的应用上传摄像头画面到 Google Cloud(Cloud Anchors / Geospatial API):
- 必须在 App Privacy 标签中声明"Camera data is collected and sent to Google Cloud for AR feature operation"
- 必须解释为什么需要上传("用于 Cloud Anchors 多人共享功能")
- 如果有第三方分析/追踪,也要声明
Apple 会对照你的隐私政策、Info.plist 的权限描述、实际代码行为做一致性检查——三者必须对得上。
Info.plist 权限声明(必须)
<!-- 摄像头权限:描述必须清晰,审核时会读取 -->
<key>NSCameraUsageDescription</key>
<string>使用摄像头来创建增强现实体验:扫描周围环境、识别物体、放置虚拟内容</string>
<!-- 位置权限(Geospatial API 需要) -->
<key>NSLocationWhenInUseUsageDescription</key>
<string>使用位置信息来精确定位增强现实内容</string>
<!-- Cloud Anchors / Geospatial API 可能需要网络权限声明(某些 iOS 版本) -->
权限请求时机
Apple 要求:权限请求必须在用户明确触发相关功能时才弹出——不能一打开应用就请求摄像头权限。
// 错误:在 viewDidLoad 就请求
override fun viewDidLoad() {
super.viewDidLoad()
cameraManager.requestPermission() // 用户还没点"进入 AR"就弹权限
}
// 正确:用户点了"开始 AR 体验"后才请求
@IBAction func startARButtonTapped(_ sender: Any) {
cameraManager.requestPermission() // 时机正确
}
跨平台 Cloud Anchors 的特别注意
iOS 上使用 ARCore Cloud Anchors 上传摄像头数据到 Google Cloud,这比普通 ARCore Session 涉及更多隐私问题。Apple 会特别关注:
- API Key 安全:Google Cloud API Key 不能硬编码在代码里(虽然 Info.plist 里的 GARAPIKey 是 Google 要求的)
- 数据流向明确:隐私政策必须说明数据从你的应用 → Google Cloud 的路径
- 用户同意:某些场景下需要额外的用户同意流程(比如儿童隐私合规)
被拒绝的常见原因
| 拒绝原因 | 解决 |
|---|---|
| Info.plist 权限描述不清晰 | 写清楚"为什么需要"而不是模糊的"需要用摄像头" |
| App Privacy 标签不一致 | 实际收集的数据和 App Privacy 声明对不上 |
| 权限请求时机错误 | 首次启动就请求,应该等用户触发功能后 |
| 崩溃 | AR 功能必须在审核员的测试设备上稳定运行 |
| AR 功能"没用" | 空壳 AR 体验(打开后只有摄像头,没有实际功能)会被拒 |
| 声称所有设备都支持 ARCore | 必须明确列出支持的 iOS 设备型号 |
| 隐私政策 URL 失效 | 提交前检查链接可访问且内容准确 |
上架前检查清单(iOS 专项)
- [ ] Info.plist 的权限描述清晰完整
- [ ] App Privacy 标签如实填写
- [ ] 隐私政策 URL 可访问且覆盖摄像头/位置数据上传
- [ ] Cloud Anchors API Key 安全(不能在代码里明文)
- [ ] 设备兼容声明明确列出
- [ ] 权限请求时机合理
- [ ] AR 功能不会在审核测试设备上崩溃
- [ ] 描述文案不夸大 AR 能力