https://zhuanlan.zhihu.com/p/24161646

IDFA全称是identifier for advertisers,在了解IDFA之前,我们需要了解另一个概念,叫UDID。UDID是苹果设备设备的唯一设备识别符,早期的时候移动广告商往往需要通过UDID用来识别用户,并对用户活动进行跟踪,从而投放广告

在iOS应用早期,UDID被第三方应用开发者和网络广告商用来收集用户数据,可以用来关联地址、记录应用使用习惯……以便推送精准广告。不少用户也对此表示苹果侵犯消费者隐私,苹果为了保护用户隐私,早在2012年就不再允许其生态中的APP获取用户的唯一标识符,但是广告主希望在移动端打广告的时候又希望能监控到每一次广告投放的效果,因此,苹果想出了折中的办法,就是提供另外一套和硬件无关的标识符,用于给商家监测广告效果,同时用户可以在设置里改变这串字符,导致商家没有办法长期跟踪用户行为。这个就叫做广告标识符(IDFA),设置路径是“设置->隐私->广告->还原广告标识符”,这个IDFA是可以关闭和修改的,据某知名检测机构调研,在国内关闭这个功能的不足1%,一旦关闭,广告还能投放,但是没办法按照兴趣等属性去投放了

https://zhuanlan.zhihu.com/p/24637313

iOS设备有多少ID?

iOS设备ID有很多,通常用到的大概有以下六个,例如UDID、IMEI、ICCID、MEID、IDFA、MAC地址等,一台苹果手机的标识方式很多,不同标识方式又有不同的参数信息。

随着iOS系统的升级,很多设备ID苹果禁止开发者获取,或者给用户诸多人性选择空间。下面详细说说参数的定位及用途,其中最为大家关注的就是IDFA。

1.UDID

UDID(UniqueDevice Identifier)是苹果iOS设备的唯一识别码,由40个字符的字母和数字组成。移动广告商、游戏网络运营商或CP往往需要通过UDID用来识别玩家、用户,并对用户活动进行跟踪;也经常会用于一台设备一个账号功能实现。

iOS 6及以前系统是可以获取到设备的UDID,iOS 7中已经完全的禁用

2.IMEI

IMEI(International Mobile Equipment Identity)是国际移动装备辨识码,是由15位数字组成的"电子串号",它与每台移动电设备一一对应,而且该码是全世界唯一的。每一只移动电话机在组装完成后都将被赋予一个全球唯一的一组号码,这个号码从生产到交付使用都将被制造生产的厂商所记录。

iOS 6及以后系统就不能正规获取IMEI,但可以通过私有API获取手机的IMEI号,一般苹果发现有通过私有API获取设备ID,上架时会予以拒绝。如果在线产品被发现会立马下架,2015年有米SDK下架风波就是因为通过私有API获取设备ID,触动了苹果的底线,导致一夜之间近300款应用被下架,其中不乏大产品。

3.MEID

MEID(Mobile Equipment Identifier)移动设备识别码,是CDMA手机的身份识别码,也是每台手机唯一的识别码。通过这个识别码,网络端可以对该手机进行跟踪和监管,适用于CDMA制式的手机。MEID的数字范围是十六进制,和IMEI的格式类似。

4.IDFA

IDFA(Identifier for Advertising)称为广告标示符,是苹果在iOS系统中给予App开发者用以标识iOS设备的一种身份参数。对广告主而言,IDFA最大的作用就是准确认识这个设备代表的用户,确认广告是否有效触达,避免将同一个广告重复投放造成预算浪费,同时进行真实性监测。而对整个广告行业来说,IDFA是形成数据链条的必须手段,广告网络、DSP和DMP都需要一个统一的设备数据身份核对标准。

不得不要说的一点,在iOS 10中,苹果将限制广告追踪的功能实质化。用户如果开启了限制广告跟踪功能(Limit Ad Tracking,简称LAT),App获取到的IDFA将是一串16位的0数值,这一举措意味着广告主将失去识别用户的能力。而在之前的版本中,如果用户打开了LAT,当App去获取时IDFA时,会被系统告知该用户开启了这个限制,但其实App依旧可以继续获取到真实的IDFA。

值得庆幸的是iOS 10的迭代率有近68%,但开启LAT的目前体量为15%左右,一般IDFA是专门给“广告用的”,而iPhone手机只要在出厂的时候没有关闭“广告追踪”,很少有用户会主动去设置关闭。

IDFA的更多相关文章

  1. 如何防止应用因获取IDFA被AppStore拒绝

    由于Appstore禁止不使用广告而采集IDFA的app上架,友盟提供IDFA版和不含IDFA版两个SDK,两个SDK在数据上并没有差异,采集IDFA是为了防止今后因为苹果可能禁止目前使用的openu ...

  2. 检查项目里是否有IDFA的方法

    检查项目里是否有IDFA的方法: 步骤:1.打开终端cd到要检查的文件的根目录. 2.执行下列语句:grep -r advertisingIdentifier . (别少了最后那个点号). 发现有ma ...

  3. iOS 被拒问题及原因 - IDFA问题

    IDFA问题 iOS APP上线被拒绝的问题解决(AdSupport),百度统计,友盟统计,讯飞语音等   苹果反馈信息如下: .... To process your delivery, the f ...

  4. 正在使用广告标识符 (IDFA)

    APP提交审核后,apple方面一直说我使用了IDFA,APP里没有集合任何广告SDK. 怀疑是其他第三方的SDK用了. 检测命令 //在项目的根目录下用终端执行 grep -r advertisin ...

  5. MAC、IDFA、IMEI正则表达式

    一.安卓: MAC:接入网络的设备的序号,唯一值.用 16 进制数表示,由 0-9,A-F 组成,如:44:2A:60:71:CC:82 Uuid 正则表达式: ^([0-9a-fA-F]{2})(( ...

  6. App Store idfa被拒检查办法

    最近应用因为这个问题被拒两次,理由如下: PLA 3.3.12We found your app uses the iOS Advertising Identifier but does not in ...

  7. IDFA问题,苹果上传问题。improper Advertising identifier [IDFA] Usage.

    原地址: 报告 improper Advertising identifier [IDFA] Usage. Your app contains the Advertising Identifier [ ...

  8. IDFA的值什么时候会发生改变

    在何种情况下 , 应用的IDFA值会发生改变? 近期工作中须要获得一个能够唯一地标示每个不同应用的ID,之前的苹果UDID已经不让使用了. 那么我们须要使用新的IDFA来引用.可是在某些情况下这个ID ...

  9. [iOS]iOS8可用的识别用户方式(idfa、UUID、idfv)

    本文地址:http://blog.csdn.net/zhaoyabei/article/details/46682765 想要追踪.统计用户,自然离不开用户唯一标识符.这是每一个公司都面临的问题.在历 ...

  10. iOS10收集IDFA,植入第三方广告[终结]--ADMob

    [PS: 前段时间,公司做ASO推广,需要在应用中收集IDFA值,跟广告平台做交互!于是有了这个需求--] 1.首先,考虑了一下情况(自己懒 -_-#),就直接在首页上写了一个Banner,循环加载广 ...

随机推荐

  1. SyntaxError: missing ; before statement

    做分页功能,遇到了很坑的事情.前台一直报错:SyntaxError: missing ; before statement 最后发现解决办法是eval("("+s+")& ...

  2. SpringBoot注册Servlet/Filter/Listener

    由于SpringBoot默认是以jar包的方式启动嵌入式的Servlet容器来启动SpringBoot的web应用,那么没有web.xml文件,如何配置我们的三大Web基础组件呢? 通过使用XXXRe ...

  3. python之面向对象篇6

    一.继承与派生 什么是继承 继承一种新建类的方式,新建的类称为子类或者派生类,被继承的类称为父类或基类或超类 子类会遗传父类的一系列属性 python支持多继承 注意: 在python3中,如果没有显 ...

  4. ssh定义、操作

    Secure Shell(縮寫为SSH)SSH為一项建立在应用层和传输层基础上的安全协议,为计算机上的Shell(壳层)提供安全的传输和使用环境. 传统的网络服务程序,如rsh.FTP.POP和Tel ...

  5. 查看mysql数据库中的所有用户

    SELECT DISTINCT CONCAT('User: ''',user,'''@''',host,''';') AS query FROM mysql.user; @前面为用户名,后面对应的‘% ...

  6. 委托构造函数(c++11)

    1.概念 1)委托构造函数也是构造函数,它也有形参列表,它将实参传递给其他的构造函数来初始化类对象,像是把自己的一些(或者全部)构造职责委托给其他构造函数一样

  7. java学习2打架代码编写

    在同一个包中的Player类 package work; public class Player { private String name; private int hp; private int ...

  8. 第08章:MongoDB-CRUD操作--文档--删除

    ①语法 remove()  [2.6以后方法过时] deleteOne() [2.6以后官方推荐] deleteMany() [2.6以后官方推荐] db.collection.remove( < ...

  9. 乌龙之Ignoring query to other database问题

    问题现象: [root@zxdb05 ~]# mysql -root -pEnter password: Welcome to the MySQL monitor.  Commands end wit ...

  10. MapReduce、Hadoop、PostgreSQL、Spark

    分布式数据库 操作指令 如何实现云计算?注:GIS数据集 谷歌集群系统主要包括三个部分:分布式文件系统GFS,分布式并行计算模型map/reduce,以及分布式数据库Bigtable hadoop是g ...