切换语言为:繁体
iOS系统中获取IDFA的方法

iOS系统中获取IDFA的方法

  • 爱糖宝
  • 2024-10-22
  • 2057
  • 0
  • 0

一、简介和代码

2021年1月28日苹果App 需要通过 AppTrackingTransparency 征得用户的许可,才能跟踪用户以及访问其设备的广告标识符。AppTrackingTransparency 苹果的官方要求以下是用Swift编写的获取IDFA的方法,并且包含了所有可能的 ATTrackingManager.AuthorizationStatus 状态及其备注信息:

import UIKit
import AdSupport
import AppTrackingTransparency

class AppDelegate: UIResponder, UIApplicationDelegate {

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
        requestIDFA()
        return true
    }

    func requestIDFA() {
        if #available(iOS 14, *) {
            ATTrackingManager.requestTrackingAuthorization { status in
                switch status {
                case .notDetermined:
                    // 用户尚未做出选择
                    print("User has not yet made a choice regarding tracking authorization.")
                case .restricted:
                    // 设备受限制,无法请求追踪权限
                    print("Device is restricted and cannot request tracking authorization.")
                case .denied:
                    // 用户拒绝了追踪权限
                    print("User denied tracking authorization.")
                case .authorized:
                    // 用户授权成功,可以获取IDFA
                    let idfa = ASIdentifierManager.shared().advertisingIdentifier.uuidString
                    print("IDFA: \(idfa)")
                @unknown default:
                    // 处理其他未知状态
                    print("Unknown tracking authorization status.")
                }
            }
        } else {
            // iOS 13及以下版本可以直接获取IDFA,无需请求权限
            if ASIdentifierManager.shared().isAdvertisingTrackingEnabled {
                let idfa = ASIdentifierManager.shared().advertisingIdentifier.uuidString
                print("IDFA: \(idfa)")
            } else {
                print("Advertising tracking is disabled.")
            }
        }
    }
}

二、说明

  1. ATTrackingManager.AuthorizationStatus.notDetermined:用户尚未做出选择。在这种情况下,用户还没有看到权限请求弹窗。

  2. ATTrackingManager.AuthorizationStatus.restricted:设备受限制,无法请求追踪权限。这通常发生在家长控制或其他系统限制的情况下。

  3. ATTrackingManager.AuthorizationStatus.denied:用户拒绝了追踪权限。在这种情况下,你无法获取IDFA。

  4. ATTrackingManager.AuthorizationStatus.authorized:用户授权成功,可以获取IDFA。

  5. @unknown default:处理其他未知状态。虽然目前只有上述四种状态,但为了代码的健壮性,我们添加了一个默认分支来处理未来可能出现的新状态。

三、在适当的地方调用方法

AppDelegate.swift 中的 application(_:didFinishLaunchingWithOptions:) 方法中调用 requestIDFA() 方法,以确保在应用启动时请求IDFA权限。

四、代码添加完毕还需要在手机端进行如下设置

  • 必须苹果手机的隐私与安全里的跟踪设置允许App请求跟踪,否则不会弹出广告权限的弹窗。 iOS系统中获取IDFA的方法

五、以上都设置正确之后,才会弹出以下弹窗

iOS系统中获取IDFA的方法

0条评论

您的电子邮件等信息不会被公开,以下所有项均必填

OK! You can skip this field.