idfa:廣告唯一標(biāo)識(shí),不同app對(duì)同一臺(tái)設(shè)備的idfa是固定且一致的。(特殊情況下會(huì)重新生成,比如在系統(tǒng)設(shè)置里關(guān)閉后重新打開(kāi)idfa允許)
iOS14之前和之后獲取權(quán)限的方法不同,
iOS14.5之前,蘋(píng)果默認(rèn)用戶(hù)允許app訪(fǎng)問(wèn)追蹤權(quán)限,之后需要明確彈框進(jìn)行權(quán)限申請(qǐng)。
iphone設(shè)置里面和idfa有關(guān)的兩個(gè)地方:
1,系統(tǒng)-隱私-跟蹤,這里若關(guān)閉“允許app請(qǐng)求跟蹤“則所有app請(qǐng)求權(quán)限時(shí)都不會(huì)彈框,直接會(huì)回調(diào)用戶(hù)沒(méi)有開(kāi)啟權(quán)限。
2,系統(tǒng)-對(duì)應(yīng)app-“允許跟蹤”開(kāi)關(guān)
iOS14系統(tǒng)之前獲取idfa
1.先導(dǎo)入框架#import <AdSupport/ASIdentifierManager.h>
2.獲取廣告標(biāo)識(shí)
// 判斷在設(shè)置-隱私里用戶(hù)是否打開(kāi)了廣告跟蹤
if ([[ASIdentifierManager sharedManager] isAdvertisingTrackingEnabled]) {
NSString *idfa = [[ASIdentifierManager sharedManager].advertisingIdentifier UUIDString];
NSLog(@"%@",idfa);
} else {
NSLog(@"請(qǐng)?jiān)谠O(shè)置-隱私-廣告中打開(kāi)廣告跟蹤功能");
}
iOS14系統(tǒng)之后獲取idfa
1.info.plist文件添加跟蹤權(quán)限請(qǐng)求描述文字
<key>NSUserTrackingUsageDescription</key>
<string>此標(biāo)識(shí)符將用于向您推薦個(gè)性化廣告。</string>
2.導(dǎo)入框架
#import <AppTrackingTransparency/AppTrackingTransparency.h>
#import <AdSupport/ASIdentifierManager.h>
3.獲取廣告標(biāo)識(shí)
// 判斷在設(shè)置-隱私里用戶(hù)是否打開(kāi)了廣告跟蹤
if (@available(iOS 14, *)) {
// iOS14及以上版本需要先請(qǐng)求權(quán)限
[ATTrackingManager requestTrackingAuthorizationWithCompletionHandler:^(ATTrackingManagerAuthorizationStatus status) {
// 獲取到權(quán)限后,依然使用老方法獲取idfa
if (status == ATTrackingManagerAuthorizationStatusAuthorized) {
NSString *idfa = [[ASIdentifierManager sharedManager].advertisingIdentifier UUIDString];
NSLog(@"%@",idfa);
} else {
NSLog(@"請(qǐng)?jiān)谠O(shè)置-隱私-跟蹤中允許App請(qǐng)求跟蹤");
}
}];
} else {
// iOS14以下版本依然使用老方法
// 判斷在設(shè)置-隱私里用戶(hù)是否打開(kāi)了廣告跟蹤
if ([[ASIdentifierManager sharedManager] isAdvertisingTrackingEnabled]) {
NSString *idfa = [[ASIdentifierManager sharedManager].advertisingIdentifier UUIDString];
NSLog(@"%@",idfa);
} else {
NSLog(@"請(qǐng)?jiān)谠O(shè)置-隱私-廣告中打開(kāi)廣告跟蹤功能");
}
}