iOS开发知识点iOS开发权限问题

iOS 14 关于IDFA 权限的申请及其变化

2020-07-03  本文已影响0人  随缘吖

2020年09月03日

目前苹果已发出通知,关于idfa权限问题将会在明年才开始实行

在 Apple,我们认为隐私是一项基本人权。正如在 WWDC20 上所宣布的,App Store 产品页面将包含一个新的隐私信息部分,帮助用户了解 app 的隐私保护做法。今天我们将为开发者发布更多详情,列明新的隐私部分所涵盖的内容。此功能将在年底之前向用户推出。而在下个月底前,您将能够通过 App Store Connect 提交相关信息,为其做好准备。

此外,在 iOS 14、iPadOS 14 和 Apple tvOS 14 上,您需要征得用户的许可,才能在其他公司所拥有的 app 和网站上跟踪用户,或访问其设备的广告标识符。我们致力于确保用户拥有是否接受 app 跟踪的选择权。为让开发者有时间进行必要的更改,app 需要获得跟踪用户许可的要求将从明年年初开始实行。更多相关信息,包括 App Store 审核指南的更新,将在今年秋天发布。


2020年08月17日

测试发现,如果将APP追踪的总开关关闭的话,新安装的APP就算是调用申请idfa权限的方法,系统权限弹窗也不会弹出


截屏2020-09-06 17.05.01.png

idfa是App推广过程中识别用户的重要标识数据!在iOS 14 之后,关于idfa的获取发生了变化,将会对APP的推广产生较大的影响

今天我们从代码层次来进行探讨 关于idfa的变动
在iOS14 之前我们都是这样获取的

引入头文件
#import <AdSupport/AdSupport.h>
代码实现
  if ([ASIdentifierManager.sharedManager isAdvertisingTrackingEnabled]) {
        NSString * idfa = [ASIdentifierManager.sharedManager advertisingIdentifier].UUIDString;
  }else {
        NSLog(@"用户开启了限制广告追踪");
  }

但是在iOS14中,获取我们还是通过同样的方法进行获取,但是我们需要先进行权限的申请(和使用定位相机一样),如果不申请权限,获取到的idfa 将会是 0000-0.......000

<key>NSUserTrackingUsageDescription</key>
<string>请根据您业务需求进行填写</string>

if (@available(iOS 14, *)) {
        ATTrackingManagerAuthorizationStatus status = ATTrackingManager.trackingAuthorizationStatus;
        switch (status) {
            case ATTrackingManagerAuthorizationStatusDenied:
                NSLog(@"用户拒绝");
                break;
            case ATTrackingManagerAuthorizationStatusAuthorized:
                NSLog(@"用户允许");
                break;
            case ATTrackingManagerAuthorizationStatusNotDetermined:
                NSLog(@"用户为做选择或未弹窗");
                break;
            default:
                break;
        }
    } else {
        // Fallback on earlier versions
       if ([ASIdentifierManager.sharedManager isAdvertisingTrackingEnabled]) {
       }else {
          NSLog(@"用户开启了限制广告追踪");
       }
    }
   
    if (@available(iOS 14, *)) {
        [ATTrackingManager requestTrackingAuthorizationWithCompletionHandler:^(ATTrackingManagerAuthorizationStatus status) {
            NSLog(@"app追踪权限:%lu",(unsigned long)status);
        }];
     } else {
        // Fallback on earlier versions
     }
NSString * idfa = [ASIdentifierManager.sharedManager advertisingIdentifier].UUIDString;

附件:


iOS 14 类文件 权限的开关
上一篇下一篇

猜你喜欢

热点阅读