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.

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

  • 如果我们使用Tracking Transparency API,那么必须在info.plist中增加隐私描述,否则的话App存在奔溃的风险

  • 只会弹出一次请求授权弹框

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

 if (@available(iOS 14, *)) {// iOS14及以上版本需要先请求权限[ATTrackingManager requestTrackingAuthorizationWithCompletionHandler:^(ATTrackingManagerAuthorizationStatus status) {// 获取到权限后,依然使用老方法获取idfaif (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、参考文章

  • IDFA扫盲:https://www.cnblogs.com/zhian/p/7663449.html

  • IDFA在iOS14中获取的方式:https://www.jianshu.com/p/be37f85f73a6

  • Apple隐私官方说明:https://developer.apple.com/cn/app-store/app-privacy-details/#user-tracking

  • 用户隐私和数据使用:https://developer.apple.com/cn/app-store/user-privacy-and-data-use/

  • 使用 AppTrackingTransparency 框架:https://developer.apple.com/documentation/apptrackingtransparency

iOS14+中广告标识(idfa)获取方式相关推荐

  1. iOS开发 ios14.0以上系统广告标识idfa获取适配

    OS14以上系统获取idfa的方式有一些变化,这里我们来讨论一下如何在IOS14以上系统获取idfa. 所需环境 1.xcode需要升级到12.0以上版本. 2.手机需要升级到14.0以上版本. iO ...

  2. 【HBuilderX】wap2app项目如何获取iOS广告标识idfa?

    使用wap2app打包app如何获取idfa? 关于这个问题,官方的文档说明存在让人误解的地方,下面将结合实际代码介绍具体的获取idfa方法. 首先,大家存在一个误解,获取idfa的代码写在哪里?官方 ...

  3. java xml dom getelementbyid,DOM中常见的元素获取方式

    1.getElementById获取元素    返回的是一个元素对象 var  timer = document.getElementById('time'); console.dir   打印返回元 ...

  4. html标签的id中带有.号的获取方式

    $("[id='abc.def.birthday']") 转载于:https://www.cnblogs.com/liw66/p/10767258.html

  5. Android10+无法获取IMEI、IOS10+关闭广告跟踪IDFA解决方法

    Android10+无法获取IMEI.IOS10+关闭广告跟踪IDFA解决方法 加粗样式 背景:为保护用户隐私,在Android X后IMEI无法获取:同样,IOS10+系统后支持用户关闭广告跟踪,导 ...

  6. 手机序列号和设备标识UDID码手机直接获取方式:

    1 设备标识UDID码获取:http://fir.im/udid 或者直接手机自带的浏览器输入那个网站链接也可以的. 打开链接点击右上角3点点击在Safari浏览器中打开,就是像一个指南中的图标点进去 ...

  7. python input与返回值-python中使用input()函数获取用户输入值方式

    我们编写程序最终目的还是来解决实际问题,所以必然会遇到输入输出的交互问题,python中提供了input函数用来获取用户的输入,我们可以用以下程序演示. user_gender = input(&qu ...

  8. php获取url传递的参数,php解析url并得到url中的参数及获取url参数的四种方式

    下面一段代码是php解析url并得到url中的参数,代码如下所示:<?php $url = "http://www.baidu.com/index.php?m=content& ...

  9. php解析url并得到url中的参数及获取url参数的四种方式

    本文给大家介绍php解析url并得到url中的参数及获取url参数的四种方式,涉及到将字符串参数变为数组,将参数变为字符串的相关知识,本文代码简单易懂,感兴趣的朋友一起看看吧 下面一段代码是php解析 ...

最新文章

  1. php类精确验证身份证号码
  2. [C++11]move资源的转移
  3. 算法:输入一个链表,输出该链表中倒数第k个结点。
  4. react配合python_部署React前端和Django后端的3种方法
  5. C语言 野指针 - C语言零基础入门教程
  6. Spring 使用Cache(转)
  7. Scoped CSS规范草案
  8. 计网笔记(一) 什么是因特网
  9. vscode调试typescript
  10. 区块链+高薪,你还等什么?
  11. vin码车架号查询易语言代码
  12. 从字符串中查找并提取数字
  13. python bmp转jpg
  14. 【雅思】【写作】【大作文】Discuss both views and give your own opinion
  15. 读书百客:《感遇·江南有丹橘》赏析
  16. 社交瓶颈下,为何巨头都选择用“眼镜”做平台?
  17. android 使用iphone线控耳机,耳机 篇一:关于安卓手机怎么用苹果专用耳机的问题...
  18. Go GUI---lxn/walk 自带demo学习---7.文件浏览器
  19. HEAD detached at xxxx
  20. codeforce Anton and Fairy Tale

热门文章

  1. 开源协议:在项目中使用Apache License 2.0
  2. 轻量级报表工具Telerik Report 2020新版亮点
  3. Epson机械手程序开发(3)机械手报错时的处理
  4. Shopee退货运费是由谁承担?
  5. 知乎:硬件和软件哪个吃香?
  6. 物联网的作用和发展方向
  7. 陈天奇明年将加入CMU出任助理教授
  8. 计算机休眠usb充电,电脑在休眠状态下,用usb口可以为手机充电吗?
  9. python点餐系统早餐_python 点餐系统(仅函数实现)
  10. html移动端源码,Framework7 (HTML 移动端框架) v4.1.0