Android10(api29)
获取唯一设备码
1  | public static String getDeviceId(Context context) {  | 
Android10 可以把设备码存储到“/data/local/tmp”(待验证)
认识OAID
移动安全联盟搞出来的这个OAID,其本质是一个设备唯一标识。
支持厂商
要实现设备唯一,必须是由厂商支持。华为、小米、OPPO、vivo、中兴、努比亚、魅族、联想、三星等均将逐步支持(一些老的设备且没有经过系统更新的不支持)
设备标识
该体系已拥有了四种设备标识
| 名称 | 生成时间 | 特性 | 重置 | 数据关联 | 适用对象 | 
|---|---|---|---|---|---|
| 设备唯一标识符 UDID  | 
设备生产时或调用时生成 | 不可逆、唯一性、封闭性、一致性、不可篡改性 | 无法重置,始终不变,除非硬件改变 | 全关联 | 用于设备的生产环境及合法性校验,不对外开放 | 
| 匿名设备 标识符 OAID  | 
系统首次启动后立即生成 | 可关闭性、连接性 | 用户手动重置、恢复出厂设置、设备商重置、被刷机等特殊情况重置 | 广告关联 | 可用于个性化推荐、广告等业务 | 
| 开发者匿名设备标识符 VAID  | 
可在应用安装时生成 | 设备、开发者、应用的几种情况 | 恢复出厂设置、卸载所有开发商应用、设备商重置、被刷机等特殊情况重置 | 开发者关联 | 可用于同一开发者不同应用之间的推荐等,对外开放 | 
| 应用匿名设备标识符 AAID  | 
可在应用安装时生成 | 匿名化、无隐私风险,设备、开发者、应用的几种情况 | 恢复出厂设置、卸载应用、清空应用手或设备商重置 | 单应用关联 | 可用于用户统计等 | 
使用API
| 接口名称 | 函数 | 参数 | 返回 | 说明 | 
|---|---|---|---|---|
| 补充设备标识状态获取接口 | public static boolean isSupported() | 
无 | boolean: 是否支持补充设备标识符获取 | true为支持,false为不支持 | 
| 匿名设备标识符获取接口 | public static String getOAID(Context context) | 
Context:应用的Application Context | String:返回匿名设备标识符或异常状态 | 匿名设备标识符最长64位,返回null表示不支持,异常状态包括网络异常、appid异常、应用异常等 | 
| 开发者匿名设备标识符获取接口 | public static String getVAID(Context context, String appid) | 
Context:应用的Application Context | String:返回开发者匿名设备符或异常状态 | 开发者匿名设备标识符最长64位,返回null表示不支持,异常状态包括网络异常、appid异常、应用异常等 | 
| 应用匿名设备标识符获取接口 | public static String getAAID(Context context, String appid) | 
Context:应用的Application Context | String:返回应用匿名设备标识符或异常状态 | 应用匿名设备标识符最长64位,返回null表示不支持,异常状态包括网络异常、appid异常、应用异常等 | 
导入SDK后,通过isSupported()方法判断设备是否支持,支持后便可以通过相应方法获取对应设备标识。
具体的接入使用可以参考官方文档,下面给出移动安全联盟的官方地址和几个厂商的地址:
 移动安全联盟-移动智能设备标识公共服务平台
 VIVO-移动智能终端补充设备标识服务
 华为-广告服务(OAID)
 百度-Android OAID 接入