本周建议动作:先审查数据流,确认应用是否真的需要 ATT;再按发行地区、系统版本和用户授权状态验收提示。 Apple 的 iOS/iPadOS 27.2 Beta 发布说明确认,Beta 加入欧盟替代扩展提示及年度重新请求能力;这不等于跟踪授权条件改变。当前应按 Beta 规则测试,正式发布前再复核 Apple 文档和真实设备结果。

这篇适合:在欧盟发行、使用广告归因或跨 App 跟踪的独立开发者;需要确认是否适用 ATT,并验证授权请求与用户说明。
维护多地区版本的开发者,以及负责 Xcode 或远程 Mac 测试环境的小团队;需要区分不同发行地区的提示规则,并建立可复现的发布前验收记录。

01

iOS 27.2 ATT 欧盟提示验收,先从真实数据流判断是否适用

不要先从营销文案或广告 SDK 的名称推断是否需要弹窗。先画出数据实际流向:应用收集了什么信息、是否交给其他公司、接收方是否把它与其他来源的数据关联,用于跨 App 或网站的定向广告、广告衡量,或交给数据经纪商。

Apple 对跟踪的定义覆盖多种组合方式;例如第三方 SDK 即使由应用集成,只要会把本应用数据与其他开发者的数据结合用于跨应用广告或衡量,就不能因为团队没有直接使用该数据而跳过评估。应将 SDK 的数据用途纳入判断,而不是只看自己写的业务代码。可对照 Apple 的用户隐私与数据使用说明和 AppTrackingTransparency 框架文档。

如果数据只用于应用内分析,或在设备上关联且不会以可识别用户或设备的方式传出,判断可能不同;这不是仅凭一句“我们不做跟踪”就能确认的。检查 SDK 文档、隐私清单、服务端接收字段和广告归因流程,并保存判断依据。本文说明的是 Apple 平台规则,不构成欧盟法律合规结论。

02

按团队职责选择验收路径

验收对象 主要核对项 可以得出的结论 不应据此推断
不构成跟踪的应用 数据流、SDK 收集与共享用途 不要仅因新界面加入就新增 ATT 请求 欧盟发行就必须弹 ATT
需要 ATT 的应用 请求调用、用途说明、状态回调 按实际授权状态控制跟踪数据的使用 替代提示改变了跟踪授权条件
多地区发行团队 发行国家、系统版本、实际显示界面 核对欧盟可选规则及特定国家规则 仅凭当前地理位置或账号地区断定资格
负责本地化的团队 基础用途说明、扩展说明与翻译 可评估是否提供补充说明 Markdown 字段是强制项或新增授权理由
测试维护者 未决定、同意、拒绝、受限及设置开关 记录提示、回调和测试环境 没显示提示就代表用户已经拒绝
03

面向广告支持型 App:分清系统请求、应用预提示与补充说明

如果评估结果显示需要 ATT,先检查应用是否配置 NSUserTrackingUsageDescription,并在实际开始跟踪前调用授权请求。Apple 要求用途说明解释应用为什么请求许可;缺少该字段,首次请求时应用可能发生异常。可查看 NSUserTrackingUsageDescription 配置说明。

应用自制的预提示可以解释数据用途,但不能冒充系统授权界面,也不能诱导用户同意或把基础功能无必要地绑定到同意结果。尤其要分清两种动作:自制界面由应用绘制;只有系统 ATT 请求才会触发系统授权流程并返回 ATT 状态。

iOS 27.2 Beta 的替代扩展界面还涉及可选字段 NSUserTrackingMarkdownUsageDescription 和 “Additional Information” 操作。它们用于补充解释或引出应用自己的相关说明页面,不是新增的跟踪授权理由,也不是每个 App 都必须加入的字段。应按 Apple 当前 ATT API 文档核对扩展界面调用和回调行为;富文本只按文档支持格式书写,并逐语言检查换行、链接和标点是否清晰。

⚠️ 补充说明应讲清数据会怎样被用于跟踪,以及用户继续操作后会看到什么。不要承诺“同意后才能使用基础功能”,也不要在用户拒绝相关许可后仍把其带回系统提示,试图覆盖原选择。

04

面向多地区版本:用发行范围核对提示,而非猜测设备位置

Apple 当前隐私说明将欧盟范围内的替代版提示列为开发者可选项,同时指出法国、德国、意大利、波兰和罗马尼亚发行的 App 仅提供替代版系统提示。地区规则应紧邻Apple 的欧盟 ATT 更新说明复核,因为本文依据的是截至 2026 年 10 月 1 日可查到的官方资料,且具体界面仍处在 Beta 验证阶段。

验收记录至少应分开保存三类信息:App 的发行地区配置、测试设备和系统版本、实际展示的系统界面。不要把用户身处某地、Apple 账号地区、App 发行范围当成同一个条件;也不要因为远程 Mac 的机房位置,就断言 iPhone 用户符合某地区提示资格。应在符合测试条件的设备上观察真实结果,再与发行配置逐项对照。

05

第一步:按状态覆盖授权请求和回调

先把授权状态拆成可验证的分支。Apple 定义的状态包括 notDetermined、authorized、denied 和 restricted;它们分别涉及尚未作出选择、允许、拒绝和受限制,并不等同于“提示是否出现”。查看 授权状态枚举说明,确认应用在每种状态下都读取并记录当前值。

发布前按以下顺序走查:

  1. 记录构建基线。 在测试单中写明 Xcode、iOS/iPadOS Beta 或正式系统版本、构建号、语言、发行地区和设备类型。Apple 的 Xcode 27.2 Beta 发布说明记录了这一工具链版本的适用系统要求;不要把 Beta 结果标成正式版验收。
  2. 核验 ATT 适用性。 把数据来源、共享对象、共享目的和 SDK 处理方式写入记录。若判断不构成跟踪,不要只为看新界面而在生产逻辑中新增请求。
  3. 检查用途文案与调用时机。 确认 NSUserTrackingUsageDescription 已存在且描述真实用途;请求在应用处于活动状态时触发,避免与另一个等待用户确认的权限请求并发。
  4. 覆盖授权状态。 分别验证尚未决定、已同意、已拒绝和受限制的行为,并记录授权调用是否展示界面、回调返回值是什么。若系统没有弹出界面,继续检查设备的“允许 App 请求跟踪”设置及是否存在未完成请求。
  5. 核对欧盟地区界面。 在与发行目标相符的测试条件下,确认是普通提示还是扩展页面;检查完整页面是否显示、文字是否截断,以及可选补充说明操作是否进入预期页面。
  6. 复测年度请求边界。 Apple 当前说明允许欧盟用户在上次作出选择满一年后再次请求,无论上次选择同意还是拒绝;系统设置中关闭允许请求的开关时则不能再次请求。记录选择日期、开关和回调,按 Apple 当前 API 说明与测试设备验证。
  7. 留存发布证据。 保存构建版本、发行地区、文案版本、屏幕录制或截图、控制台日志及状态回调结果。代码模拟、模拟器界面和真实用户的地区资格不是一回事;测试记录应明确指出采用了哪种环境。

提醒:系统可能因设备限制、设置关闭、应用不在活动状态、另一个请求尚未处理,或调用来自 App Extension 等原因不显示提示。不要把“没看到弹窗”直接记录成“用户拒绝”;应同时检查当前授权状态与回调。

在测试设备上,可用类似下面的调试输出记录状态;正式构建不要输出不必要的用户数据:

let status = ATTrackingManager.trackingAuthorizationStatus
print("ATT status: \(status.rawValue)")

期望记录的是系统返回的授权状态,而不是团队对屏幕表现的主观判断。若状态仍为 notDetermined,应继续排查调用条件;若为 restricted,则不应把它写成用户点了拒绝。

06

维护 Xcode 或远程 Mac 环境:让结果可复现,不替用户判定资格

Xcode 27.2 当前对应的是 Beta 工具链信息。Apple 的版本说明可用于核对构建环境要求,但远程 Mac 的作用只是提供运行 Xcode 的 macOS 环境;它不能单独模拟用户的真实地区资格,也不能替代合适的 iPhone 测试设备或系统条件。Beta 后续更新后,应重新核对 iOS/iPadOS 27.2 发布说明及 ATT API 页面,再重跑受影响的验收项。

如果当前团队缺少可复现的 macOS 构建环境,可以先了解远程 Mac 计算力方案,并结合NodeMini 的 Mac 远程使用入口确认环境用途。正式决策前,先核对所需 macOS/Xcode 版本、真机连接方式和测试安排;远程桌面本身不会赋予地区提示资格。

07

常见问题

27.2 Beta 的欧盟扩展界面与 ATT 授权规则有何关系?

Apple 的 iOS/iPadOS 27.2 Beta 说明了两项变化:欧盟支持替代扩展提示,且欧盟用户在上次选择满一年后可能再次收到请求。它们改变的是提示形式和请求时机,不代表 ATT 的跟踪定义改变。验收应将系统界面、授权调用和应用数据处理分别记录,不能只截一张提示截图就结束测试。

欧盟哪些发行地区采用专属的 ATT 系统提示?

Apple 当前文档列出法国、德国、意大利、波兰和罗马尼亚:在这些国家发行的 App 仅提供替代版系统提示;欧盟其他地区可选择替代版本。测试时应以发行地区条件及设备实际显示为依据,记录系统版本和配置,不要仅凭当前所在地、网络地址或账号地区来宣告验收通过。

扩展提示中的跟踪用途说明应如何配置?

基础请求仍应使用 NSUserTrackingUsageDescription 说明请求用途。扩展界面可评估是否提供 NSUserTrackingMarkdownUsageDescription,这是补充说明,不是新授权理由,也不应误写成必填项。文案应具体描述数据用途,检查本地化和 Markdown 呈现;若使用 “Additional Information”,还要验证进入的应用页面与说明内容一致。

欧盟 ATT 拒绝状态的年度重新请求条件是什么?

Apple 当前说明的欧盟年度重新请求条件是:上次选择已满一年,无论用户当时同意还是拒绝;如果用户关闭系统设置中的允许跟踪请求开关,则不能再次请求。测试时应保存上次选择日期、系统设置和授权状态,并区分 notDetermined 与 denied。Beta 模拟结果不能直接代表所有真实用户状态。

08

发布前的环境选择

如果团队现在依靠共享电脑或临时借用的 Mac 验收,常见问题是 Xcode 版本不一致、测试设备连接不稳定,以及复测时无法还原相同的系统和授权状态。购买一台 Mac 可以提供固定的本地环境,但若只为阶段性 Beta 验收,硬件购置与后续维护可能并不划算;远程 Mac 则适合需要独立 macOS 环境构建、记录和重复测试的团队,但仍需自行准备符合条件的测试设备,并验证版本、连接方式和实际工作流。

若测试频率低、已有合规的本地 Mac 环境,继续本地测试更直接;若需要短期验证 Xcode 27.2 构建与 iOS 测试流程,可先核对 NodeMini 的远程 Mac 方案是否满足工具链和设备连接需求,再决定是否租用。最终验收依据仍应是 Apple 当前文档、测试设备上的界面与回调记录,而不是运行 Xcode 的 Mac 所在地。