我们正在调查一个在 iOS 27 之后出现的 ATT 问题。

我们的应用请求以下权限:

  • AppTrackingTransparency 权限
  • 位置权限 (CLLocationManager)

我们最初之所以开始调查,是因为 Meta 归因的 iOS 安装/转化在 iOS 27 发布后急剧下降,而 App Store 下载量似乎没有同等程度下降。

在调查过程中,我们发现新鲜安装的某些情况下 ATT 提示未如预期出现,且 ATTrackingManager.trackingAuthorizationStatus 仍为 .notDetermined。

我们的 iOS 工程师目前怀疑在首次启动流程中,位置权限请求与 ATT 请求可能相互干扰。

在 iOS 27 之前,我们未观察到相同的权限流问题。

我们从 Apple 文档中了解到,如果另一个系统权限请求已在等待,ATT 提示可能不会显示,且 iOS 不会对并发权限请求进行排队。

然而,我们尚未确认这在我们的应用中是否真的如此。

我们也尚未从受影响的生产构建中获得详细的生命周期和权限日志。

在下一个构建中,我们计划添加以下日志:

  • iOS 版本
  • 应用/场景活动状态
  • 请求前当前 ATT 授权状态
  • requestTrackingAuthorization 被调用的 precise 时间
  • ATT 完成回调结果
  • 请求位置授权的 precise 时间
  • 位置授权回调/状态
  • 应用/场景生命周期转换
  • ATT 提示是否实际显示
  • 权限流完成后的最终 ATT 状态

在发布该诊断构建之前,我们希望确保收集到正确的信息并准确解读 iOS 行为。

我们的问题如下:

  1. 是否有人在 iOS 27 上特别观察到 ATT 行为的变化或倒退,尤其是在首次启动时同时请求其他权限(如位置权限)的情况?

  2. 如果在调用 requestTrackingAuthorization 时,位置权限请求已在等待,ATT 提示是否可能无法出现并使状态保持为 .notDetermined?

  3. iOS 会对这些权限请求进行排队,还是在另一个系统权限提示正在进行时,ATT 请求会被直接丢弃?

  4. 在请求 ATT 之前,是否有可靠的方法判断当前是否没有其他系统权限请求正在等待?

  5. 如果 ATT 仍保持为 .notDetermined,推荐的生产端行为是什么?

  6. 在应用再次成为活动状态且所有其他权限流程完成后,是否适合稍后重新调用 requestTrackingAuthorization?

  7. 除 UIApplicationStateActive / sceneDidBecomeActive 之外,还有哪些额外的生命周期状态或回调需要记录?

  8. 在下一个构建中,是否有其他与 ATT 或权限相关的值建议捕获,以区分:

  9. 应用内部的权限序列化问题

  10. 位置权限与 ATT 的交互
  11. 或 iOS 27 系统回退

  12. 是否有人在 iOS 27.0、27.1 和 27.2 之间观察到不同的行为?

我们的首要目标是确认 ATT 行为本身是否在 iOS 系统层面是正确的。

Meta 归因下降最初促使我们进行此调查,但我们在此讨论中并非旨在诊断 Meta 归因。

我们具体是想了解 iOS 27 上的 ATT / 位置权限行为。

如果您在 iOS 27 上有相关经验,或对我们在下一份诊断构建中应捕获的内容有建议,我们将不胜感激。