iOS中ATT权限被拒后,如何合规展示CMP并通过App Store审核?
解决方案:ATT拒审后仍展示CMP并通过苹果审核
核心问题拆解
苹果拒审的本质是误解了CMP的用途,认为你在用户拒绝追踪后仍通过Cookie进行跨应用/跨平台追踪。你的核心诉求是保留CMP(用于网页功能)同时符合ATT规则,需从「明确边界」「调整逻辑」「合规配置」三个方向入手。
具体解决步骤
1. 重构CMP提示文案,彻底明确非追踪属性
在CMP弹窗中用清晰无歧义的语言说明Cookie用途,避免任何可能被误解为追踪的表述:
- 明确区分:「功能性Cookie」(用于网页正常加载、社交模块交互)vs「追踪类Cookie」(你的APP不使用)
- 直接声明:「本APP不会通过Cookie或其他方式追踪您的跨应用/跨平台行为,所有Cookie仅用于保障内置网页的基础功能」
2. 解耦CMP与ATT的触发逻辑
不要把CMP展示和ATT授权状态绑定,让两者独立运行:
- 优先展示CMP(APP启动后立即触发),处理网页Cookie同意
- 再请求ATT权限,仅用于调整你的分析功能(而非控制CMP)
修改后的代码示例:
func setupAppPermissions() async { // 第一步:独立展示CMP,与ATT状态无关 showConsentManagerDialog() // 第二步:处理ATT授权,仅用于调整分析策略 let trackingStatus = await ATTrackingManager.requestTrackingAuthorization() switch trackingStatus { case .authorized: // 开启基于IDFA的精细化分析(仅应用内,不跨应用追踪) enablePreciseAnalytics() case .denied, .notDetermined, .restricted: // 切换为非追踪式分析(仅收集应用内行为数据,不关联IDFA) enableBasicAnalytics() } } func showConsentManagerDialog() { // 展示CMP弹窗,使用修改后的合规文案 }
3. 严格管控内置网页的Cookie行为
针对内置的社交媒体等网页内容,必须确保:
- 禁用所有第三方追踪类Cookie,仅保留支撑网页功能的必要Cookie(比如登录状态、页面交互逻辑)
- 如果嵌入第三方网页,要求服务商提供「非追踪模式」的嵌入代码,或者手动拦截网页中的追踪脚本
- 在
Info.plist的NSUserTrackingUsageDescription中,明确说明ATT用途:「仅用于优化应用内的使用行为分析,不会用于跨应用或跨平台的用户追踪」
4. 提交审核时补充说明文档
在App Store Connect的审核备注中主动澄清:
- CMP的唯一作用是管理内置网页的功能性Cookie,不涉及任何用户追踪行为
- ATT权限仅用于调整应用内分析的精度,不会收集或共享用户数据用于跨应用追踪
- 附上CMP弹窗的截图,展示合规的文案说明
内容的提问来源于stack exchange,提问作者bodich
相关产品推荐
相关产品推荐

