【问题标题】:Swift - App Tracking Transparency - No Show Pop-Up due to ‘Allow Apps to Request to Track’ Greyed OutSwift - 应用程序跟踪透明度 - 由于“允许应用程序请求跟踪”灰显而没有显示弹出窗口
【发布时间】:2021-07-06 03:00:14
【问题描述】:

就像你现在一样,Apple 改变了移动开发在广告和跟踪方面的规则。

Apple 准备了新的 Beta 14.5 iOS 版本。使用此版本跟踪将受到限制。所以,我想在我的应用中模拟这个选项。

当我将手机更新到 14.5 iOS 版本(Beta)和 Xcode(版本 12.5 beta 3 (12E5244e))时,“允许应用程序请求跟踪”选项显示为灰色,并且无法更改。

所以,在下面的代码中,由于上述问题,总是返回 .restricted

func requestPermission() {
    if #available(iOS 14, *) {
        ATTrackingManager.requestTrackingAuthorization { status in
            switch status {
            case .authorized:
                // Tracking authorization dialog was shown
                // and we are authorized
                print("Authorized")

                // Now that we are authorized we can get the IDFA
                print(ASIdentifierManager.shared().advertisingIdentifier)
            case .denied:
                // Tracking authorization dialog was
                // shown and permission is denied
                print("Denied")
            case .notDetermined:
                // Tracking authorization dialog has not been shown
                print("Not Determined")
            case .restricted:
                print("Restricted")
            @unknown default:
                print("Unknown")
            }
        }
    } else {
        // Fallback on earlier versions
    }
}

所以,由于这个问题,我陷入了困境。您有什么选择/建议吗?

不是:在 iOS 14.2 版本中,一切都很好,并且可以更改“允许应用程序请求跟踪”选项。但现在它是灰色的。

【问题讨论】:

  • 我也面临同样的问题。
  • @AkbarKhan 我现在检查了一下,iOS 15 公开版一切正常。你可以用这个版本调试你的代码

标签: ios swift ios14 apptrackingtransparency


【解决方案1】:

这对我有用

func requestIDFA() {
        DispatchQueue.main.asyncAfter(deadline: .now() + 1) {
            if #available(iOS 14, *) {
                
                ATTrackingManager.requestTrackingAuthorization(completionHandler: { status in
                    // Tracking authorization completed. Start loading ads here.
                })
            } else {
                // Fallback on earlier versions
            }
        }
    }

如果您使用 Appdelegate 从 ApplicationDidBecomeActive 调用它,如果您使用 Scenedelegate 从 SceneDidBecomeActive 调用它

【讨论】:

  • 我一直在寻找这个答案,谢谢!您在哪里找到有关“如果您使用 Appdelegate 从 ApplicationDidBecomeActive 调用它,如果您使用 Scenedelegate 从 SceneDidBecomeActive 调用它”的信息
  • 如果您使用 Appdelegate 从 ApplicationDidBecomeActive 调用它,如果您使用 Scenedelegate 从 SceneDidBecomeActive 调用它!谢谢!
猜你喜欢
  • 2022-07-15
  • 1970-01-01
  • 2016-09-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-02
  • 2016-02-02
  • 2021-07-25
相关资源
最近更新 更多