OAID 移动安全联盟(该联盟为中国信息通信研究院下属电信终端产业协会的下属联盟组织)联合终端厂商推出的团体标准。
OAID:Open Anonymous Device Identifier 开放匿名设备标识符
根据该联盟公布在网上的《移动智能终端补充设备标识规范》文本“本规范旨在规范移动智能终端补充设备标识体系的体系架构、功能要求、接口要求以及安全要求。 规范设备生产企业遵循标准要求开发统一接口调用方式,方便移动应用接入、减小维护成本”。
想要实现设备唯一,必须是由厂商支持,所以移动安全联盟的成员和专注于中国市场的厂商会率先支持(我使用的一加截止2020.5.6没有支持),华为、小米、OPPO、vivo、中兴、努比亚、魅族、联想、三星等设备厂商均将逐步支持(一些老的设备且没有经过系统更新的不支持)。
虽然一直提到的都是OAID,其实该体系拥有了四种设备标识,如下图所示:
通过集成http://www.msa-alliance.cn/col.jsp?id=120 提供的SDK,调用接口获取
1 IMEI获取用户授权率低,目前手机系统会弹窗提醒用户是否读取IMEI数据,大部分用户会选择不允许,这样导致广告主无法统计到用户激活数据
2 缺乏统一的计数采集标准
从目前的商业化推广角度来看,需要制定统一计算采集标准,CP设定打卡机制,手机厂商支持该数据的提取,维护商业化系统的有序运转
3 隐私保护要求
欧盟GDPR、我国《网安法》等相关法律法规对个人保护的要求越来越高,IMEI码等已经被认定用户的隐私的一部分
4 现有体系无法满足
在生产、售后、报关、政府抽检等场景,IMEI被篡改,冒用的情况时有发生,用于设备骗保、以旧换新,不法分子躲避风控,进行走私等
5 现有设备标识缺乏匿名化防护
设备标识缺乏匿名化防护,可以利用设备标识符讲不同App收集的信息进行关联,对用户进行精准画像,可以准确到用户的年龄段、职业、收入、学历等,造成公民信息泄露。
在此之前,获得设备唯一码
Android中设备唯一码有很多,如:MAC地址、IMEI号(DeviceId)、IMSI号、ANDROID_ID、序列号(SerialNumber)等,
1 MAC地址
缺点:
在当前没打开WiFi的情况下获取得到的MAC地址值为空,即使在执行这段代码前是有打开过WiFi,而执行这段代码时WiFi状态是关闭的,也不能获取到MAC地址
2 IMEI号 IMSI号
缺点:
IMEI号(国际移动设备身份码)、IMSI号(国际移动设备识别码)这两个是有电话功能的移动设备才具有,也就是说某些没有电话功能的平板是获取不到IMEI和IMSI号的。且在某些设备上getDeviceId()会返回垃圾数据。
IMEI未来会禁止开发者获取
3 ANDROID_ID
缺点:
①.设备刷机wipe数据或恢复出厂设置时ANDROID_ID值会被重置。
②.现在网上已有修改设备ANDROID_ID值的APP应用。
③.某些厂商定制的系统可能会导致不同的设备产生相同的ANDROID_ID。
④.某些厂商定制的系统可能导致设备返回ANDROID_ID值为空。
⑤.CDMA设备,ANDROID_ID和DeviceId返回的值相同
4 序列号(SerialNumber)
但并不是所有设备上都能稳定获取到这些值
缺点:
在某些设备上此方法会返回垃圾数据。
另外谷歌也提供获取“官方”唯一标识符的方法
https://developer.android.com/training/articles/user-data-ids#java
华为开发网站实例如下:https://developer.huawei.com/consumer/cn/codelab/HMSAdsOAID/index.html#0
开发者通过HMS集成com.huawei.hms:ads-identifier的广告能力,通过HMS开发的接口,获取 OAID参数获取结果如下
面向开发者的开放能力:
开发者可基于OAID,向用户提供个性化的营销活动或商业广告,提升转化效果,过程如下:
1.开发者APP可调用华为广告服务(Huawei Ads)的接口,获得OAID和"限制个性化广告"开关状态。
2.开发者APP请求广告时,如果用户未启用"限制个性化广告",可根据OAID构建的细分人群,进行个性化的营销活动和商业广告推荐。
3.开发者APP向用户展示广告,当广告被用户点击后,开发者APP可从应用市场下载、安装被推广的APP。
4.开发者APP在曝光、点击、下载等事件中,携带OAID,用于平台对营销活动或商业广告的效果进行跟踪和分析。
iOS硬件、软件、生态全部由apple一家控制,所以较早的解决了这个问题。
从IOS5.0(2011年8月份)开始,苹果宣布将不再支持用uniqueIdentifier方法获取设备的UDID,iOS5以下是可以用的。苹果从iOS5开始就移除了通过代码访问UDID的权限。从2013年5月1日起,试图访问UIDIDs的程序将不再被审核通过,
iOS 2.0版本以后UIDevice提供一个获取设备唯一标识符的方法uniqueIdentifier,通过该方法我们可以获取设备的序列号,这个也是目前为止唯一可以确认唯一的标示符。 许多开发者把UDID跟用户的真实姓名、密码、住址、其它数据关联起来;网络窥探者会从多个应用收集这些数据,然后顺藤摸瓜得到这个人的许多隐私数据。
广告标示符(IDFA-identifierForIdentifier)
广告标示符,在同一个设备上的所有App都会取到相同的值,是苹果专门给各广告提供商用来追踪用户而设的。但好在Apple默认是允许追踪的,而且一般用户都不知道有这么个设置,所以基本上用来监测推广效果,是戳戳有余了。
它是iOS 6中另外一个新的方法,提供了一个方法advertisingIdentifier,通过调用该方法会返回一个NSUUID实例,最后可以获得一个UUID,由系统存储着的。
#import
NSString *adId = [[[ASIdentifierManager sharedManager] advertisingIdentifier] UUIDString];
不过即使这是由系统存储的,但是有几种情况下,会重新生成广告标示符。
(1)如果用户完全重置系统((设置程序 -> 通用 -> 还原 -> 还原位置与隐私) ,这个广告标示符会重新生成。
(2)另外如果用户明确的还原广告(设置程序-> 通用 -> 关于本机 -> 广告 -> 还原广告标示符) ,那么广告标示符也会重新生成。
进一步促进广告产业的健康良性发展。
术语和定义:
英文缩写 中文名称 英文全称 长度
IMEI 国际移动设备识别码 International Mobile Equipment Identity 15~17位
UDID 设备唯一标识符 Unique Device Identifier 最长64位
OAID 匿名设备标识符 Open Anonymous Device Identifier 最长64位
VAID 开发者匿名设备标识符 Vender Anonymous Device Identifier 最长64位
AAID 应用匿名设备标识符 Application Anonymous Device Identifier 最长64位