[iOS] 隨手記錄 IDFA 的一些相關內容
IDFA
IDFA,廣告標識符,類似于這一臺設備的唯一性標識符,一般提供給第三方去做一些廣告的關聯。
但如果用戶完全 重置系統,或者 “
還原位置與隱私” 這個廣告標示符會重新生成。也就是說IDFA并不是一直不變的。
注意:如果程序在后臺運行,此時用戶“還原廣告標示符”,然后再回到程序中,此時獲取廣 告標示符并不會立即獲得還原后的標示符。必須要終止程序,然后再重新啟動程序,才能獲得還原后的廣告標示符。
PPS:模擬器上獲取的IDFA一直都是“0000......”
iOS14
iOS 14之后,蘋果增加了IDFA的權限控制,用戶可以選擇是否允許 APP 獲取到 IDFA。
首先,需要在工程的 info.plist 中增加一個請求用戶的IDFA權限時的提示語,key為“Privacy - Tracking Usage Description”,內容可以為“申請獲取您的廣告標識符用于提供更加個性化的服務”等。
iOS14之后,獲取IDFA的邏輯方法也有所改變,其實“獲取IDFA”的代碼方法沒有變,但是需要增加一層對用戶授權狀態的判斷。如果不進行授權的相關邏輯的話,apple會返回一個“00000....”的IDFA。
重新跑代碼后,在你獲取IDFA時,會有彈窗向用戶請求IDFA的權限。
參考以下代碼:
- (NSString *)getIDFAString{ __block NSString *idfa = @""; if (@available(iOS 14, *)) { // iOS14及以上版本需要先請求權限 [ATTrackingManager requestTrackingAuthorizationWithCompletionHandler:^(ATTrackingManagerAuthorizationStatus status) { // 獲取到權限后,依然使用老方法獲取idfa if (status == ATTrackingManagerAuthorizationStatusAuthorized) { idfa = [[ASIdentifierManager sharedManager].advertisingIdentifier UUIDString]; } else { NSLog(@"請在設置-隱私-跟蹤中允許App請求跟蹤"); } }]; } else { // iOS14以下版本依然使用老方法 // 判斷在設置-隱私里用戶是否打開了廣告跟蹤 if ([[ASIdentifierManager sharedManager] isAdvertisingTrackingEnabled]) { idfa = [[ASIdentifierManager sharedManager].advertisingIdentifier UUIDString]; } else { NSLog(@"請在設置-隱私-廣告中打開廣告跟蹤功能"); } } return idfa; }

浙公網安備 33010602011771號