iOS 14 App Tracking预权限提示合规性及过渡期IDFA处理咨询
Hey there, let's work through your two questions step by step, based on Apple's 2021 ATT guidelines and common industry practices at the time:
1. 预提示后不调用ATTrackingManager.requestTrackingAuthorization是否符合苹果规范?
Short answer: 是的,这种做法是合规的。
苹果ATT框架的核心规则是:只有在需要追踪用户(即使用IDFA进行跨应用/平台广告追踪)时,才必须请求用户授权。如果你的用户通过预提示明确选择退出个性化广告,你主动放弃调用授权弹窗,相当于你选择不进行追踪行为——这和苹果默认的"未请求授权"状态(IDFA为0000-0000-0000-0000)完全一致。
当时苹果的指南里并没有禁止开发者添加自定义预提示,只要你的预提示不误导用户、不替代官方的ATT弹窗(你这里也没有替代,只是提前做说明),就不会违规。你的逻辑本质是尊重用户选择,主动切换到非个性化广告模式,完全符合苹果的隐私要求。
2. 过渡期间如何处理预提示选择退出的用户?
确实,在ATT强制执行前,默认情况下App可以正常访问IDFA,这会导致预提示选择退出的用户依然被用IDFA做个性化追踪,违背用户意愿。这里有几个可行的解决方案:
通过广告平台API强制非个性化广告:
这是最稳妥的方式。以AdMob为例,你可以在创建广告请求时,明确设置请求非个性化广告:let request = GADRequest() request.nonPersonalizedAds = true // 强制请求非个性化广告这样不管IDFA是否可用,AdMob都会返回非个性化广告,完全符合用户的预选择,而且不需要修改IDFA(苹果禁止手动篡改IDFA,这一点一定要注意)。
过渡期间仍调用授权弹窗,但结合用户预选择优化体验:
如果你担心后续合规问题,也可以对预提示选择退出的用户调用requestTrackingAuthorization,但在弹窗前可以加一层说明,比如:"你之前选择了非个性化广告,我们需要确认你的追踪权限设置"。不过这确实有点违背直觉,所以更推荐第一种方案。利用ATT状态的兼容性处理:
你可以在App启动时检查用户的预选择状态,如果用户已选择退出,就始终使用非个性化广告配置,直到ATT强制执行后,系统默认IDFA变为0000,此时你的逻辑会自然对齐。
需要强调的是:不要尝试手动禁用或修改IDFA,苹果严格禁止篡改IDFA的行为,这会导致App被拒。通过广告平台的配置来控制广告类型,是唯一合规且有效的方式。
内容的提问来源于stack exchange,提问作者David Villegas




