ios 获取idfa

329 阅读1分钟

在iOS14 之前我们都是这样获取的

引入头文件
#import <AdSupport/AdSupport.h>
代码实现
  if ([ASIdentifierManager.sharedManager isAdvertisingTrackingEnabled]) {
        NSString * idfa = [ASIdentifierManager.sharedManager advertisingIdentifier].UUIDString;
  }else {
        NSLog(@"用户开启了限制广告追踪");
  }

但是在iOS14中,获取我们还是通过同样的方法进行获取,但是我们需要先进行权限的申请(和使用定位相机一样),如果不申请权限,获取到的idfa 将会是 0000-0.......000

  • 在info.plist 中添加 权限申请描述
<key>NSUserTrackingUsageDescription</key>
<string>请根据您业务需求进行填写</string>
  • 进行权限判断,根据不同权限进行判断
#import <AppTrackingTransparency/AppTrackingTransparency.h>
#import <AdSupport/ASIdentifierManager.h>
if (@available(iOS 14, *)) {
        ATTrackingManagerAuthorizationStatus status = ATTrackingManager.trackingAuthorizationStatus;
        switch (status) {
            case ATTrackingManagerAuthorizationStatusDenied:
                NSLog(@"用户拒绝");
                break;
            case ATTrackingManagerAuthorizationStatusAuthorized:
                NSLog(@"用户允许");
                break;
            case ATTrackingManagerAuthorizationStatusNotDetermined:
                NSLog(@"用户为做选择或未弹窗");
                break;
            default:
                break;
        }
    } else {
        // Fallback on earlier versions
       if ([ASIdentifierManager.sharedManager isAdvertisingTrackingEnabled]) {
       }else {
          NSLog(@"用户开启了限制广告追踪");
       }
    }
   
  • 申请权限
#import <AppTrackingTransparency/AppTrackingTransparency.h>
#import <AdSupport/ASIdentifierManager.h>
    if (@available(iOS 14, *)) {
        [ATTrackingManager requestTrackingAuthorizationWithCompletionHandler:^(ATTrackingManagerAuthorizationStatus status) {            NSLog(@"app追踪权限:%lu",(unsigned long)status);        }];
     } else {
        // Fallback on earlier versions
     }
  • 获取idfa
NSString * idfa = [ASIdentifierManager.sharedManager advertisingIdentifier].UUIDString;