iOS 14适配 IDFA隐私加强

出现问题:

控制台报错
RenrenPlay-Concept[31782:4157972] [access] This app has crashed because it attempted to access privacy-sensitive data without a usage description. The app's Info.plist must contain an NSUserTrackingUsageDescription key with a string value explaining to the user how the app uses this data.

解决方案:

运行的Target对应的info.plist中申请权限:
打开方式:Source Code

<key>NSUserTrackingUsageDescription</key>
<string>获取设备信息用以精准推送您喜欢的内容</string>

打开方式:Property List

key :Privacy - Tracking Usage Description
value:获取设备信息用以精准推送您喜欢的内容

申请权限代码:

#import <AppTrackingTransparency/AppTrackingTransparency.h>
#import <AdSupport/AdSupport.h>

// 调用requestTrackingAuthorizationWithCompletionHandler会弹窗提示用户是否授权,点拒绝则无法读取
[ATTrackingManager requestTrackingAuthorizationWithCompletionHandler:^(ATTrackingManagerAuthorizationStatus status) {
        if (status == ATTrackingManagerAuthorizationStatusAuthorized) {
            // 已授权
            NSString *idfa = [[ASIdentifierManager sharedManager].advertisingIdentifier UUIDString];
        } else {
            // 此时用户点击拒绝则无法读取
            NSString *idfa = [[ASIdentifierManager sharedManager].advertisingIdentifier UUIDString];
        }
    }];

或者判断版本进行处理

if (@available(iOS 14, *)) {
       [ATTrackingManager requestTrackingAuthorizationWithCompletionHandler:^(ATTrackingManagerAuthorizationStatus status) {
        if (status == ATTrackingManagerAuthorizationStatusAuthorized) {
            // 已授权
            NSString *idfa = [[ASIdentifierManager sharedManager].advertisingIdentifier UUIDString];
        } else {
            // 此时用户点击拒绝则无法读取
            NSString *idfa = [[ASIdentifierManager sharedManager].advertisingIdentifier UUIDString];
        }
    }];
    } else {
        // 使用原方式访问 IDFA
    }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容