You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter集成AppsFlyer SDK遇ADClientErrorTrackingRestrictedOrDenied问题求助

Flutter AppsFlyer SDK无法正确识别iOS 14+ ATT授权状态

我在Flutter项目中集成AppsFlyer SDK适配Android和iOS应用,Android端无问题,但iOS 14+环境下遇到核心问题:用户接受Apple追踪授权弹窗后,SDK始终错误识别授权状态为notDetermined(状态0)或denied(状态3),导致追踪数据无法同步到AppsFlyer仪表盘。

预期与异常流程对比

预期正常流程

  1. 打开应用
  2. 展示Apple追踪授权弹窗
  3. 用户接受追踪
  4. AppsFlyer SDK以authorized(状态2)完成初始化
  5. SDK正常发送事件,数据同步至仪表盘

当前异常流程

  1. 打开应用
  2. 展示Apple追踪授权弹窗
  3. 用户接受追踪
  4. AppsFlyer SDK以notDetermined(状态0)或denied(状态3)完成初始化
  5. SDK发送事件时携带ADClientErrorTrackingRestrictedOrDenied错误,数据无法同步

日志与请求Payload细节

  • Xcode控制台日志(弹窗展示后):
    [com.appsflyer.serial] [ATT] Tracking authorization update from `oldStatus`: -255 to `newStatus`: 0
    [com.appsflyer.serial] [ATT] Tracking authorization update from `oldStatus`: 0 to `newStatus`: 3
    
  • Flutter日志(用户授权后):
    [log] ATT status: TrackingStatus.authorized
    
  • SDK请求Payload错误:
    用户授权后,SDK发送的API请求及购买事件Payload中均包含错误信息:
    "af_iad_data":{"error":"ADClientErrorTrackingRestrictedOrDenied"}
    

即使多次重启应用,SDK仍无法更新ATT状态,每次启动都会错误识别授权状态。

可能的原因与排查方向

1. ATT弹窗调用时机问题

确保在AppsFlyer SDK初始化之前触发ATT授权弹窗,或等待用户授权结果返回后再初始化SDK。若SDK先于授权结果完成初始化,可能会缓存错误状态,后续无法自动更新。

2. iOS Info.plist配置检查

确认Info.plist中已添加NSUserTrackingUsageDescription键,且描述内容符合Apple审核要求。缺失该键会导致授权弹窗无法正常展示,或系统直接默认拒绝授权。

3. AppsFlyer插件版本验证

检查当前使用的AppsFlyer Flutter插件版本,尝试升级至最新稳定版。旧版本可能存在ATT状态识别的兼容性bug,新版本通常会修复此类问题。

4. 手动同步授权状态

由于Flutter层能正确获取ATT授权状态,可尝试手动将该状态同步给原生SDK。例如在iOS端requestTrackingAuthorizationWithCompletionHandler的回调中,主动触发SDK的状态更新逻辑。

5. 系统全局跟踪设置检查

确认测试设备未开启限制广告跟踪(路径:设置→隐私与安全性→跟踪→允许App请求跟踪)。若系统全局关闭跟踪权限,即使用户在App内授权,SDK仍会识别为denied状态。

内容的提问来源于stack exchange,提问作者Ruyther Costa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 12:40:56