iOS14+中广告标识(idfa)获取方式

论坛 期权论坛 脚本     
已经选择匿名的用户   2021-10-25 13:37   6080   0

1、什么是IDFA

假如没有网络身份证,那么每个商家(App)只能基于自己的账号体系标识用户,并记录用户的行为。而有了统一的网络身份证之后,各个商家之间的数据就可以打通了,天猫不仅知道用户A在淘宝系的购物数据,也能了解到该用户在社交网络的行为,以及旅游的喜好,等等。

可以想象一下,随着时间的推移,用户在移动端的行为数据越积越多,用户就会变得越来越像透明人,除非换手机,几乎没有任何办法去抵御这个科技带来的负面效应。

只有一个例外,苹果!苹果的特立独行体现在诸多方面,用户隐私就是其中之一。

IDFA 是苹果 iOS 6 开始新增的广告标识符,英文全称是 Identifier for Advertising ,用于给开发者跟踪广告效果用的,可以简单理解为 iPhone 的设备临时身份证,说是临时身份证是因为它允许用户更换,IDFA 存储在用户 iOS 系统上。虽然同一设备上的App应用获取到的 IDFA 是相同的,但是,iOS 用户可以通过(设置程序 -> 通用 -> 还原 -> 还原位置与隐私)更换 IDFA,而且从iOS 10 系统开始,提供禁止广告跟踪功能,用户勾选这个功能后,应用程序将无法读取到设备的 IDFA。

因为这个IDFA不是唯一的,所以一开始行业内是很抵触的,想方设法去获取UDID(跟手机绑定的,用户不能改变),引起苹果大怒,在13年时禁止所有App获取UDID,否则不能上架,也正因为其生态的封闭性,才能迫使大家就范。虽然IDFA不是唯一的,但是毕竟胜过没有,况且也没有多少用户会去更改。

2、如何关闭广告跟踪

在iOS14之前,我们可以通过(设置->隐私->广告)进入广告设置页面,打开“限制广告跟踪”开关,如下图:

之前

在iOS14+系统上,我们点击(系统设置->隐私)会发现增加了一个叫做“跟踪”的功能,如下图:

点击进入后,我们可以看到“允许App请求跟踪”开关,如下图:

如果不想让商户App跟踪,只需要将开关关闭即可。

通过上面的方式,商户App就获取不到IDFA表示符,或者获取到的标识符为:00000000-0000-0000-0000-000000000000。

3、获取idfa的方式

通过调用AdSupport.framework动态库来获取

 [ASIdentifierManager sharedManager].advertisingIdentifier.UUIDString

以上代码在iOS14.5之前,只要用户把“跟踪”开关设置为允许,就可以正常访问到IDFA信息,不需要用户授权处理。从官方文档中https://developer.apple.com/cn/app-store/user-privacy-and-data-use/中了解到:

从 iOS 14.5, iPadOS 14.5 和 Apple tvOS 14.5 开始,您必须先征得用户的许可,才能在其他公司拥有的 app 和网站内对其进行跟踪。

4、Apple对“跟踪”隐私说明

下面是App官方给出的征求跟踪许可

从 iOS 14.5, iPadOS 14.5 和 Apple tvOS 14.5 开始,您需要通过 AppTrackingTransparency 框架征得用户许可,然后才能跟踪用户或访问其设备的广告标识符。跟踪是指将从您的 app 收集的用户或设备数据与从其他公司的 app、网站或离线文件中收集的用户或设备数据关联在一起,以投放定向广告或衡量广告效果的行为。此外,跟踪还指与数据代理商共享用户或设备数据。

跟踪的例子包括但不限于:

  • 根据从其他公司的 app 和网站收集的用户数据,在您的 app 中显示定向广告。

  • 与数据代理商共享设备位置数据或电子邮件列表。

  • 与第三方广告网络共享电子邮件、广告 ID 或其他 ID 的列表,该第三方广告网络使用上述信息在其他开发者的 app 中重新定位这些用户或查找类似的用户。

  • 在您的 app 中放置一个第三方 SDK,它会将您 app 中的用户数据与其他开发者 app 中的用户数据结合起来,用于投放定向广告或衡量广告效果 (即使您没有将该 SDK 用于这些目的)。例如,使用分析 SDK 可以调整从您的 app 中集得数据的用途,以在其他开发者的 app 中启用定向广告。

以下用例不被视为跟踪行为,无需通过 AppTrackingTransparency 框架征取用户许可:

  • 您 app 中的用户数据或设备数据仅与用户设备上的第三方数据关联,且不会以能识别用户或设备的方式从设备中对外发送。

  • 与您共享数据的数据代理商仅将数据用于欺诈检测、欺诈防范或安全防护目的,并且仅代表您行事。例如,仅出于防范信用卡诈骗的目的使用数据代理商。

AppTrackingTransparency框架的使用说明:

若要征得许可来跟踪用户及访问设备的广告符标识,请使用 AppTrackingTransparency 框架。同时,您还必须在系统提示中加入用途说明,以解释为什么要跟踪用户。除非您征得用户对启用跟踪功能的许可,否则设备中广告标识符的值将全部为零,您也不可如上所述地对用户进行跟踪。

尽管您可以选择在任何时间显示 AppTrackingTransparency 提示,但只有您显示这个提示并且用户授予许可后,系统才会返回设备的广告标识符值。用途字符串可用来说明这些数据将用于什么用途,以帮助用户了解他们将选择共享哪些信息。如果用户允许 app 请求跟踪,但却关闭了您 app 的跟踪,您可以请求用户更改对 app 的设定,并向用户提供能转至“设置”的快捷链接 (英文),以便他们更改跟踪许可的设定。

5、使用AppTrackingTransparency框架

在iOS14.5+系统上,如果应用收集有关最终用户的数据并与其他公司共享,以便跨应用和网站进行跟踪,则必须使用AppTrackingTransparency框架。AppTrackingTransparency框架向用户提出应用程序跟踪授权请求,并提供跟踪授权状态。

要使用AppTrackingTransparency框架,请执行以下操作:

  1. Set up a NSUserTrackingUsageDescription to display a system-permission alert request for your app installed on end-user devices.

  2. Call requestTrackingAuthorization(completionHandler:) to present the app-tracking authorization request to the end user.

  3. Use trackingAuthorizationStatus to determine the app-tracking permission status. See ATTrackingManager.AuthorizationStatus for status enums.

有几个需要注意的点,这里总结如下:

程序中可以使用如下的代码:

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

6、IDFA对审核的影响

https://blog.csdn.net/qq_29284809/article/details/52053833

  • 您 app 中的用户数据或设备数据仅与用户设备上的第三方数据关联,且不会以能识别用户或设备的方式从设备中对外发送。

  • 与您共享数据的数据代理商仅将数据用于欺诈检测、欺诈防范或安全防护目的,并且仅代表您行事。例如,仅出于防范信用卡诈骗的目的使用数据代理商。

7、参考文章

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:86
帖子:240
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP