App Store 审核中被拒的原因里,和设备信息相关的问题出现频率不低。常见的拒审理由包括:App 收集设备信息(UDID、MAC 地址、IDFA 等)但未在隐私政策中说明、隐私政策链接无效或不存在、以及使用 IDFA 但未做 App Tracking Transparency 提示。这些问题通常不需要改代码,但需要在 App Store Connect 里更新相关信息并重新提交。

隐私政策不完整

苹果要求所有提交到 App Store 的应用必须在 App Store Connect 中提供隐私政策链接。如果审核反馈"Your app collects device information but no privacy policy provided",说明 App 有网络请求或 SDK 采集了设备信息,但开发者没有上传隐私政策。

解决方法:准备一份隐私政策文档,说明收集了哪些信息、用途是什么、如何存储和保护用户数据。可以使用第三方隐私政策生成工具快速生成,或者参考同类应用的隐私政策来写。文档放到一个可公开访问的网址上(网站页面或 GitHub Pages 都可以),然后在 App Store Connect 的应用信息页面填上隐私政策链接,重新提交审核。

如果 App 接入了第三方 SDK(统计、推送、广告类的 SDK),这些 SDK 本身也会采集设备信息,需要在隐私政策里一并说明。

IDFA 使用问题

如果 App 调用了 IDFA(广告标识符)相关的 API,苹果要求必须在代码中集成 App Tracking Transparency 框架,弹出授权请求。审核被拒时通常会提示"Missing usage description for NSUserTrackingUsageDescription"。

解决方法:在 Info.plist 里添加 NSUserTrackingUsageDescription 的描述文字,说明使用 IDFA 的目的。然后在合适的时机调用 ATTrackingManager 请求授权。修改后重新打包 IPA 再上传。

Appuploader 在被拒后的作用

App 被拒修改后需要重新提交审核。如果只是修改了 App Store Connect 里的信息(隐私政策链接、审核备注等),直接在页面上保存即可。如果需要替换 IPA 文件,Appuploader 可以快速完成上传操作。

提交上传界面选择更新后的 IPA,使用原来的 App 版本号或递增一个版本号,上传后等几分钟构建版本出现在 App Store Connect 上,再提交到审核。如果使用了命令行版,可以集成到修复流程里,修改完配置和代码后一键打包上传。

上传后如果构建版本不显示,检查版本号是否和之前提交过的重复。苹果不允许相同版本号重复提交。可以在 App Store Connect 里把旧版本的审核撤回,然后用新版本号重新提交。

被拒后的处理流程

收到拒审邮件后,先看清楚具体原因。设备信息相关的拒审通常有固定的解决方向:缺隐私政策就补隐私政策链接,缺权限说明就补 Info.plist 描述,SDK 采集信息就更新隐私政策。改完后在 Resolution Center 回复审核团队说明修改内容,然后重新提交。如果问题只涉及元数据(描述文字、隐私政策等),不需要重新打包,只用修改 App Store Connect 信息后提交。