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<AppTrackingTransparency/AppTrackingTransparency.h>

#import<AdSupport/AdSupport.h>

- (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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容