【问题标题】:IOS14 tracking permission for apps compiled with IOS 13使用 IOS 13 编译的应用程序的 IOS14 跟踪权限
【发布时间】:2020-12-07 09:39:55
【问题描述】:

在 IOS14 中要使用Advertising Identifier,您需要请求许可,但是 AppStore 上已经可用的应用程序的行为是什么(使用 IOS13 SDK 编译)?

我已将设备更新到 IOS14 Beta 4 并从 AppStore 下载了应用程序。一旦我打开应用程序,它不会自动请求任何跟踪权限,Advertising Identifier00000-0000-0000

这是否意味着我必须提交使用 IOS14 SDK 编译的应用更新并请求跟踪权限,否则 Advertising Identifier 将不可用?

【问题讨论】:

    标签: ios permissions tracking ios14 idfa


    【解决方案1】:

    是的,您需要提交新的应用版本。它不会自动请求跟踪权限,因为它应该通过开发人员实例化。 因此,您需要使用AppTrackingTransparency 框架并请求用户许可:

    if #available(iOS 14, *) {
       ATTrackingManager.requestTrackingAuthorization { _ in
       }
    } else {
       // Fallback on earlier versions
    }
    

    【讨论】:

      【解决方案2】:

      您必须从 ios 14 实现 AppTrackingTransparency 才能显示跟踪权限。通过这个实现,您可以收集 IDFA。

      在 AppDelegate 中执行此操作

      import AppTrackingTransparency
      

      didFinishLaunchingWithOptions launchOptions写这样的函数

           if #available(iOS 14, *) {
      self.requestIDFAPermission() 
      }
      

      然后写这个函数

         func requestIDFAPermission() {
          if #available(iOS 14, *) {
              let semaphore = DispatchSemaphore(value: 0)
              DispatchQueue.main.async {
                  ATTrackingManager.requestTrackingAuthorization { (status) in
                      if (status == .authorized) {
                          let idfa = ASIdentifierManager.shared().advertisingIdentifier
                          print("IDFA: " + idfa.uuidString)
                      } else {
                          print("Failed to get IDFA")
                      }
                      semaphore.signal()
                  }
              }
              semaphore.wait()
          }
      }
      

      还有一件事。您应该在 Plist 中添加Privacy - Tracking Usage Description

      【讨论】:

      • 这会导致死锁,因为 AppDelegate 已经在主线程上运行。您正在等待主线程上的信号量信号,因此异步块无法执行。作为另一项改进,当您已经在函数本身中执行此操作时,无需检查 ios 14 的可用性。
      猜你喜欢
      • 2015-04-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-16
      • 1970-01-01
      • 2020-01-27
      • 1970-01-01
      相关资源
      最近更新 更多