1.首先由于iOS14+后 默认需要主动调用AppTrackingTransparency权限、否则会被苹果审核打回
2、那我们来说一下如何使用
1>在info.plist中添加NSUserTrackingUsageDescription声明
2>首先依赖的库是
#import <AppTrackingTransparency/AppTrackingTransparency.h>
3>其次在- (void)applicationDidBecomeActive:(UIApplication*)application 代理方法中调用广告权限(当然也可以放到其他位置,例如didFinishLaunchingWithOptions)
// 授权广告权限
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
if(@available(iOS14, *)) {
[ATTrackingManager requestTrackingAuthorizationWithCompletionHandler:^(ATTrackingManagerAuthorizationStatus status) {
if (status == ATTrackingManagerAuthorizationStatusAuthorized || status == ATTrackingManagerAuthorizationStatusDenied || status == ATTrackingManagerAuthorizationStatusRestricted ) {
// self.trackingTag = self.trackingTag + 1; // 启动只接受一次ATTrackingManager回调
// 调用自己或者第三方激活接口
}
}];
}else{
// self.trackingTag = self.trackingTag + 1; // 启动只接受一次ATTrackingManager回调
// 调用自己或者第三方激活接口
}
});
Tips:这里需要说明一下:
*当前授权状态。如果广告授权未弹出还没有提示用户批准访问,则返回值为
* ATTrackingManagerAuthorizationStatusNotDetermined,或者ATTrackingManagerAuthorizationStatusRestricted如果这个值被管理。
*广告授权弹出用户被提示,返回值将是ATTrackingManagerAuthorizationStatusDenied(拒绝)或ATTrackingManagerAuthorizationStatusAuthorized(同意)。
ATTrackingManagerAuthorizationStatusRestricted 这个枚举值猜测是apple 广告授权弹出异常的时候会返回此值,为了不影响激活统计 也将此情况下调用激活