iOS14获取不到IDFA

 IDFA 全称为 Identity for Advertisers ,即广告标识符。用来标记用户,目前最广泛的用途是用于投放广告、个性化推荐等。在 iOS13 及以前,系统会默认为用户开启允许追踪设置,我们可以简单的通过代码来获取到用户的 IDFA 标识符

if ([[ASIdentifierManager sharedManager] isAdvertisingTrackingEnabled]) {

    NSString *idfaString = [[ASIdentifierManager sharedManager] advertisingIdentifier].UUIDString;

    NSLog(@"%@", idfaString);

}

但是在 iOS14 中,这个判断用户是否允许被追踪的方法已经废弃

iOS14 中,系统会默认为用户关闭广告追踪权限


对于这种情况,我们需要去请求用户权限。首先需要在 Info.plist 中配置" NSUserTrackingUsageDescription " 及描述文案,接着使用 AppTrackingTransparency 框架中的 ATTrackingManager 中的 requestTrackingAuthorizationWithCompletionHandler 请求用户权限,在用户授权后再去访问 IDFA 才能够获取到正确信息

#import

#import

- (void)testIDFA {

    if (@available(iOS 14, *)) {

        [ATTrackingManager requestTrackingAuthorizationWithCompletionHandler:^(ATTrackingManagerAuthorizationStatus status) {

            if (status == ATTrackingManagerAuthorizationStatusAuthorized) {

                NSString *idfaString = [[ASIdentifierManager sharedManager] advertisingIdentifier].UUIDString;

            }

        }];

    } else {

        // 使用原方式访问 IDFA    }

}

对于用户拒绝授权 UserTracking 的情况,可以考虑接入苹果的 SKAdNetwork 框架进行广告分析。

Apple Developer Documentation

你可能感兴趣的:(iOS14获取不到IDFA)