How to retrieve iPhone IDFA from API?

前端 未结 11 807
深忆病人
深忆病人 2020-12-12 14:37

I would like to get the device IDFA. How to get this info from iOS official API ?

11条回答
  •  伪装坚强ぢ
    2020-12-12 15:03

    IDFA - Identifier for Advertising

    isAdvertisingTrackingEnabled -> trackingAuthorizationStatus
    

    From iOS v14 Apple deprecated isAdvertisingTrackingEnabled and moved the logic into AppTrackingTransparency Framework. Now user has to grand a permission to read idfa(in the same way as Location permission)

    User can control it via:

    #iOS 13
    #AdSupport
    #ASIdentifierManager.shared().isAdvertisingTrackingEnabled
    Settings -> Privacy -> Advertising -> Limit Ad Tracking
    
    #iOS 14
    #AppTrackingTransparency
    #ATTrackingManager.trackingAuthorizationStatus
    
    #a global flag
    Settings -> Privacy -> Tracking -> `Allow Apps to Request to Track` 
    #or select an app from list to control every app separately 
    
    #a local flag
    Settings ->  -> Allow Tracking 
    
    

    Implementation

    import AppTrackingTransparency
    import AdSupport
    
    func getIDFA() -> String? {
        // Check whether advertising tracking is enabled
        if #available(iOS 14, *) {
            if ATTrackingManager.trackingAuthorizationStatus != ATTrackingManager.AuthorizationStatus.authorized  {
                return nil
            }
        } else {
            if ASIdentifierManager.shared().isAdvertisingTrackingEnabled == false {
                return nil
            }
        }
    
        return ASIdentifierManager.shared().advertisingIdentifier.uuidString
    }
    

提交回复
热议问题