切換語言為:簡體
iOS系統中獲取IDFA的方法

iOS系統中獲取IDFA的方法

  • 爱糖宝
  • 2024-10-22
  • 2052
  • 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.