iOS开发技能iOS收藏

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(@"请在设置-隐私-广告中打开广告跟踪功能");
        }
    }
上一篇下一篇

猜你喜欢

热点阅读