App Tracking Transparency(ATT)是 Apple 的隐私框架,于 2021 年 4 月随 iOS 14.5 推出,要求所有 iOS、iPadOS 和 tvOS 应用在跨其他公司的应用和网站跟踪用户活动之前,必须获得用户的明确许可。当应用调用 ATT API 时,系统会显示一个标准化提示,其中包含两个选项:”允许”或”要求 App 不跟踪”。如果未获得用户同意,应用将无法访问设备的广告标识符(IDFA),这从根本上改变了移动营销人员在 Apple 设备上衡量广告活动、归因安装以及个性化用户体验的方式。
App Tracking Transparency 的工作原理
ATT 围绕一个核心 UI 元素构建:由系统呈现的权限对话框。应用必须先触发该对话框,才能读取设备的 IDFA 或以其他方式跨第三方平台跟踪用户。该提示通过 Apple 的 AppTrackingTransparency 框架显示,其文案由 Apple 固定——开发者只能自定义一段显示在系统文字下方的简短用途说明。
根据 Apple 的定义,”跟踪”具体是指将从你的应用收集的用户或设备数据,与从其他公司的应用、网站或线下来源收集的数据关联起来,用于广告或广告效果衡量。与数据经纪商共享数据同样属于跟踪,无论你的应用是否读取 IDFA 等标识符。

ATT 提示
每个 ATT 提示都包含三个部分:
- 固定的系统问题:”允许 [App Name] 跟踪您在其他公司的 App 和网站上的活动吗?”
- 由开发者提供的一段简短用途说明,用于解释为何请求跟踪权限。
- 两个按钮:”要求 App 不跟踪”和”允许”。
在用户点击”允许”之前,默认状态为拒绝跟踪。应用可以提前显示自定义预提示页面,向用户说明选择允许跟踪的价值,但系统提示本身无法修改、跳过或替换。
授权状态
ATT 框架会返回四种授权状态之一,每种状态都会决定你的应用可以执行哪些操作以及不能执行哪些操作。
| 状态 | 含义 | 返回的 IDFA |
|---|---|---|
| 未确定 | 尚未显示提示 | 全部为零 |
| 已授权 | 用户点击了”允许” | 真实 IDFA |
| 已拒绝 | 用户点击了”要求 App 不跟踪”或在系统范围内禁用了跟踪 | 全部为零 |
| 受限 | 设备层面禁止跟踪(例如儿童账户、MDM) | 全部为零 |
Apple 为什么推出 ATT
ATT 是 Apple 更广泛隐私战略的核心执行机制。在 iOS 14.5 之前,每台 iPhone 默认都会向应用提供 IDFA。如果用户想停止个性化广告,则必须进入设置并启用”限制广告跟踪”。大约 70% 的用户从未这样做,因此广告网络、归因服务商和开发者几乎可以不受限制地构建跨应用用户行为画像。
Apple 彻底改变了这一默认设置。ATT 将 iOS 生态系统从默认允许、主动退出的跟踪模式转变为默认拒绝、主动选择加入,并将 IDFA——跨应用归因的关键基础——的访问权限绑定到系统对话框中的一次点击。结合 App Store 隐私标签和 SKAdNetwork,ATT 成为了 Apple 推动整个移动广告生态要么获取用户同意,要么使用聚合、匿名数据运行的机制。
ATT 与 IDFA:发生了哪些变化
广告标识符(IDFA)是 iOS 向应用提供的、用于广告和归因的唯一设备级 ID。在 ATT 推出之前,它始终可用;ATT 推出之后,只有获得用户明确同意的应用才能获取它。未获得同意的应用会收到一串零值,而不是真实 ID。
| 方面 | ATT 之前(iOS 14.5 之前) | ATT 之后(iOS 14.5+) |
|---|---|---|
| 默认跟踪状态 | 默认加入 | 默认退出 |
| IDFA 访问权限 | 除非用户启用了 LAT,否则可用 | 仅在用户授权后可用 |
| 用户级归因 | Default | 仅适用于选择加入的用户 |
| 授权体验 | 设置中的开关(LAT) | 每个应用单独显示系统提示 |
| 聚合式替代方案 | 未被广泛使用 | SKAdNetwork / AdAttributionKit |
对广告主和订阅类应用的影响
ATT 大幅减少了广告主在 iOS 上可获得的确定性用户级数据,并进一步影响到用户获取、归因和生命周期价值建模。尤其对于订阅类应用而言,其单位经济模型依赖于持续数月跟踪从试用到付费的转化以及后续续订,因此失去基于 IDFA 的精细归因能力后,营销绩效衡量方式不得不进行全面调整。
归因挑战
双重授权进一步加剧了这一问题。为了将一次付费安装准确关联回某次广告展示,发布广告的应用和目标应用(广告主)都需要获得 ATT 授权——这种”双重选择加入”会使基于 IDFA 的有效归因率远低于表面上的授权率。如果缺少其中任何一方的授权,MMP 就无法以确定性方式将安装与其来源关联,而概率归因方法则存在显著误差。
SKAdNetwork 和 AdAttributionKit
Apple 提供的隐私保护型替代方案是 SKAdNetwork(SKAN),之后又推出 AdAttributionKit 对其进行补充,并在部分场景下取代它。这两个框架都在广告活动层级而非用户层级提供归因:广告网络可以知道某个广告活动带来了安装,但无法知道具体是哪个用户完成了安装。回传存在延迟,转化值经过离散化处理,同时聚合阈值会限制报告的精细程度。如需更全面了解这些机制在 iOS 上的实际表现,请参阅 Adapty 关于 iOS 14、IDFA 和归因的深度解析。
如何在 iOS 应用中实现 ATT
实现 ATT 分为两个步骤:首先在应用的 Info.plist 中声明跟踪用途,然后在用户流程中的适当时机调用 ATT API。
添加隐私说明
在 Info.plist 中添加 NSUserTrackingUsageDescription 键,并填写一到两句话,说明你的应用为什么需要跟踪用户。这段文字会显示在系统提示下方,如果应用使用含糊、笼统或具有误导性的说明,Apple 会拒绝其上架。
请求授权
当应用处于前台运行状态时,从主线程调用 ATTrackingManager.requestTrackingAuthorization(completionHandler:)。对于每次应用安装,系统只会在第一次调用时显示提示——后续调用只会返回缓存的授权状态,不会再次弹出提示。在读取 ASIdentifierManager.advertisingIdentifier 之前,应始终检查返回的状态;如果状态不是 .authorized,IDFA 将全部为零。
ATT 提示的最佳实践
系统文案无法修改,但显示时机和上下文可以调整。目前主要有三种提示展示策略,每种策略在覆盖用户范围与授权质量之间都有不同的权衡。
| 漏斗阶段 | 触发时机 | 用户覆盖范围 | 典型授权率 |
|---|---|---|---|
| 漏斗早期 | 首次启动应用或首次会话 | 最大 | 较低 |
| 漏斗中期 | 完成新手引导或首次感受到产品价值之后 | 中等 | 中等至较高 |
| 漏斗后期 | 创建账户或首次购买时 | 最小 | 最高 |
最稳定有效的方法包括:显示预提示,说明明确的具体好处(例如”个性化推荐”或”由广告支持的免费内容”);等到用户已经体验到产品价值后再请求授权;以及如实说明哪些数据会被共享。预提示不得在视觉上模仿系统对话框——Apple 的审核团队会拒绝试图误导用户点击”允许”的应用,同时禁止通过提供奖励来换取用户授权。
ATT 授权率:当前基准
随着用户越来越熟悉隐私提示,以及开发者不断优化预提示和新手引导流程,授权率整体呈上升趋势。Adjust 2025 年第二季度的数据显示,全球平均授权率约为 35%,而 AppsFlyer 此前的基准数据显示,部分用户群体中的这一比例接近 50%。不同国家和垂直行业之间差异显著——游戏和娱乐类应用通常表现较低,而工具和金融类应用往往能够获得更高的授权率。
| 指标 | 近似值 |
|---|---|
| 全球 ATT 授权率 | ~35% |
| 报告中的高位水平 | ~50% |
| 有效 IDFA 归因率(经过双重授权后) | 显著更低 |
| 受限设备(无法显示提示) | 约占 iOS 用户的 14% |
ATT 与 Android 隐私框架对比
Google 在 Android 上采取了不同的路径。Google Advertising ID(GAID)——相当于 Android 版 IDFA——长期以来默认可访问,但 Android 12 引入了退出开关,而 Google 的 Privacy Sandbox 则旨在逐步淘汰跨应用标识符,转而使用设备端的聚合信号。用户级标识符 IDFV(Identifier for Vendors)可在同一发布商的多个应用之间共享,在 iOS 上无需 ATT 授权即可继续使用,对于第一方数据衡量仍然非常有价值。
| 方面 | iOS(ATT) | Android(GAID + Privacy Sandbox) |
|---|---|---|
| 授权模式 | 按应用主动选择加入 | 系统范围内主动退出 |
| 默认跟踪状态 | 获得权限之前处于禁用状态 | 在用户重置 ID 之前处于启用状态 |
| 聚合框架 | SKAdNetwork / AdAttributionKit | Privacy Sandbox APIs |
| 拒绝授权时的标识符 | 归零的 IDFA | 归零的 GAID |