iOS14-AppTrackingTransparency(idfa适配)

参考:

  • https://developer.apple.com/news/?id=8h0btjq7

AppTrackingTransparency

截止至2020年4月25日,实测更新iOS系统至iOS14.4.2,设置->隐私->跟踪允许App请求数据的总开关是默认开启的(可能由更新之前旧系统中允许获取idfa的开关决定的),因此如果使用旧的代码,不需要调用授权代码,仍然可以获取到idfa。

截屏2021-04-25 16.54.27.png

苹果官网明确指出:

确保您的应用已准备好用于iOS 14.5,iPadOS 14.5和tvOS 14.5。在即将发布的公共发行版中,所有应用都必须使用AppTrackingTransparency框架来请求用户允许其跟踪或访问其设备的广告标识符的权限。除非您获得用户允许启用跟踪的权限,否则设备的广告标识符值将全为零,并且您可能无法跟踪它们。

因此 AppTrackingTransparency 是必须适配的,后面更新到 iOS14.5 ,旧的获取方式就不好使了。两个步骤:
1、工程 Info.plist文件新增用户授权提示文案,用 Source Code的方式打开Info.plist文件,添加如下代码,string值可根据实际需要自行设置:

NSUserTrackingUsageDescription
此标识符将用于向您发送个性化广告。

2、代码适配:

导入框架:

#import 
#import 

iOS版本判断:

- (NSString*)idfa {
    __block NSString *idfa = @"";
    ASIdentifierManager *manager = [ASIdentifierManager sharedManager];
    if (@available(iOS 14, *)) {
        [ATTrackingManager requestTrackingAuthorizationWithCompletionHandler:^(ATTrackingManagerAuthorizationStatus status) {
            if (status == ATTrackingManagerAuthorizationStatusAuthorized) {
                idfa = [[manager advertisingIdentifier] UUIDString];
            }
        }];
    }else{
        if ([manager isAdvertisingTrackingEnabled]) {
            idfa = [[manager advertisingIdentifier] UUIDString];
        }
    }  
    return idfa;
}

在iOS14 以上的系统,一旦执行授权代码requestTrackingAuthorizationWithCompletionHandler,只有第一次授权会弹出系统提示框,如下:

授权提示框

应用也会增加到 设置->隐私->跟踪的列表中:

授权应用列表

注意:

1、如果关闭列表中对应的应用的开关,再开启,该应用的idfa值不变;
2、如果关闭总跟踪开关(“允许App请求跟踪”)再开启,则应用的开关需要单独开启,且应用的idfa值会改变;

你可能感兴趣的:(iOS14-AppTrackingTransparency(idfa适配))