2

在某些设备上 trackingAuthorizationStatus 总是返回 .denied,即使“允许应用程序请求跟踪”开关已打开。这意味着该应用程序永远无法请求跟踪权限。在“设置”>“隐私”>“跟踪”中,该应用没有重新打开权限的开关。我们的团队有几台测试设备,两部同型号的 iPhone 和同一个版本的 iOS 会产生不同的结果。一个能够显示 requestTrackingAuthorization 提示并按预期运行,而另外两个无论如何都保持 ATTrackingManagerAuthorizationStatusDenied 状态。我们尝试了常规 > 重置 > 重置位置和隐私以及删除应用程序、重新安装、重新启动、升级操作系统。没有什么可以修复 .denied 状态。这是代码:

    override func viewDidLoad() {
    super.viewDidLoad()
    let status = ATTrackingManager.trackingAuthorizationStatus
    switch status {
    case .authorized:
        idfaLabel.text = "Yay"
    case .denied:
        idfaLabel.text = "Goodbye IDFA"
    case .notDetermined:
        idfaLabel.text = "You've got a choice to make"
    case .restricted:
        idfaLabel.text = "can't help you there"
    default:
        print("New case???")
    }
    ATTrackingManager.requestTrackingAuthorization(completionHandler: {_ in
        print("Tracking Requested")
    })
}

提前感谢任何线索。

4

1 回答 1

1

这是在 14.5.1 版本中修复的操作系统级别问题,因此只需更新您的操作系统以在首次启动时获取 ATT 对话框。

iOS 和 iPadOS 14.5.1 发行说明

此更新修复了 App Tracking Transparency 的问题,即之前在“设置”中禁用“允许应用请求跟踪”的某些用户在重新启用后可能不会收到来自应用的提示。此更新还提供重要的安全更新,建议所有用户使用。

于 2021-05-04T05:23:35.190 回答