iOS 获取idfa,设备信息获取适配
2021-08-10 本文已影响0人
万年老参
idfa:广告唯一标识,不同app对同一台设备的idfa是固定且一致的。(特殊情况下会重新生成,比如在系统设置里关闭后重新打开idfa允许)
iOS14之前和之后获取权限的方法不同,
iOS14.5之前,苹果默认用户允许app访问追踪权限,之后需要明确弹框进行权限申请。
iphone设置里面和idfa有关的两个地方:
1,系统-隐私-跟踪,这里若关闭“允许app请求跟踪“则所有app请求权限时都不会弹框,直接会回调用户没有开启权限。
2,系统-对应app-“允许跟踪”开关
iOS14系统之前获取idfa
1.先导入框架#import <AdSupport/ASIdentifierManager.h>
2.获取广告标识
// 判断在设置-隐私里用户是否打开了广告跟踪
if ([[ASIdentifierManager sharedManager] isAdvertisingTrackingEnabled]) {
NSString *idfa = [[ASIdentifierManager sharedManager].advertisingIdentifier UUIDString];
NSLog(@"%@",idfa);
} else {
NSLog(@"请在设置-隐私-广告中打开广告跟踪功能");
}
iOS14系统之后获取idfa
1.info.plist文件添加跟踪权限请求描述文字
<key>NSUserTrackingUsageDescription</key>
<string>此标识符将用于向您推荐个性化广告。</string>
2.导入框架
#import <AppTrackingTransparency/AppTrackingTransparency.h>
#import <AdSupport/ASIdentifierManager.h>
3.获取广告标识
// 判断在设置-隐私里用户是否打开了广告跟踪
if (@available(iOS 14, *)) {
// iOS14及以上版本需要先请求权限
[ATTrackingManager requestTrackingAuthorizationWithCompletionHandler:^(ATTrackingManagerAuthorizationStatus status) {
// 获取到权限后,依然使用老方法获取idfa
if (status == ATTrackingManagerAuthorizationStatusAuthorized) {
NSString *idfa = [[ASIdentifierManager sharedManager].advertisingIdentifier UUIDString];
NSLog(@"%@",idfa);
} else {
NSLog(@"请在设置-隐私-跟踪中允许App请求跟踪");
}
}];
} else {
// iOS14以下版本依然使用老方法
// 判断在设置-隐私里用户是否打开了广告跟踪
if ([[ASIdentifierManager sharedManager] isAdvertisingTrackingEnabled]) {
NSString *idfa = [[ASIdentifierManager sharedManager].advertisingIdentifier UUIDString];
NSLog(@"%@",idfa);
} else {
NSLog(@"请在设置-隐私-广告中打开广告跟踪功能");
}
}