前言

目前有个需求,需要获取设备的唯一识别码 标记用户的手机,在android低版本上很好实现,imei或者deviceID之间能够拿到,但是android10已经不给此项权限了……于是开始找资料。

不可重置的设备标识符 :官(墙)方(外)推荐方法

从 Android Q 开始,应用必须具有 READ_PRIVILEGED_PHONE_STATE 特许权限才能访问设备的不可重置标识符(包含 IMEI 和序列号)。许多用例不需要不可重置的设备标识符。如果您的应用没有该权限,但您仍尝试查询标识符的相关信息,则平台的响应会因目标 SDK 版本而异:

如果应用以 Android Q 为目标平台,则会发生 SecurityException
如果应用以 Android 9(API 级别 28)或更低版本为目标平台,则相应方法会返回 null 或占位符数据(如果应用具有 READ_PHONE_STATE 权限)。否则,会发生 SecurityException
注意:如果您的应用是设备所有者或配置文件所有者应用,那么即使您的应用以 Android Q 为目标平台,您也只需 READ_PHONE_STATE 权限即可访问不可重置的设备标识符。此外,如果您的应用具有特殊运营商权限,则无需任何权限即可访问这些标识符。
如果您的应用将不可重置的设备标识符用于广告跟踪或用户分析目的,请为这些特定用例创建 Android 广告 ID。要了解详情,请参阅唯一标识符的最佳做法。https://developer.android.google.cn/training/articles/user-data-ids

另一篇文章有讲解如何获取广告id :Google Advertising Id 获取

但是还需要注册谷歌开发者 申请谷歌广告的id

The Google Mobile Ads SDK was initialized incorrectly. AdMob publishers    
should follow the instructions here:                                   
https://googlemobileadssdk.page.link/admob-android-update-manifest         
to add a valid App ID inside the AndroidManifest.                         
Google Ad Manager publishers should follow instructions here:              
https://googlemobileadssdk.page.link/ad-manager-android-update-manifest.  

最后放弃了~

国内 设备获取设备标识符

全国信息安全标准化技术委员会《信息安全技术 移动互联网应用(App)收集个人信息基本规范(草案)》, 规定了地图导航、网络约车、即时通讯、博客论坛、网络支付、新闻资讯、网上 购物等 21 种常用服务类型可收集的最少信息。

App 收集个人信息基本要求
管理要求

App收集个人信息应满足以下管理要求:

  • a) App 运营者应履行个人信息保护义务,采取必要安全措施,保障用户个人信息安全。
  • b) 当用户同意 App 收集某服务类型的最少信息时,App 不得因用户拒绝提供最少信息 之外的个人信息而拒绝提供该类型服务。 注:附录 A 列举了 App 常见的服务类型以及服务类型对应的最少信息。
  • c) App 不得收集与所提供的服务无关的个人信息。
  • d) 对外共享、转让个人信息前,App 应事先征得用户明示同意。当用户不同意, 则不 得对外共享、转让用户个人信息。
  • e) App 不得收集不可变更的设备唯一标识(如 IMEI 号、MAC 地址等) ,用于保障网络 安全或运营安全的除外。
  • f) 用户明确拒绝使用某服务类型后,App 不得频繁(如每 48 小时超过一次)征求用 户同意使用该类型服务,并保证其他服务类型正常使用。
  • g) App 应对其使用的第三方代码、插件的个人信息收集行为负责。第三方代码、插件 收集个人信息视同 App 收集,App 应防止第三方代码、插件收集无关的个人信息。 注:如第三方代码、插件自行向用户明示其收集、使用个人信息的目的、方式、范围,并征得用户同意,则第三方代码、插件独立对其个人信息收集行为承担责任。
技术要求

App收集个人信息应满足以下技术要求:

  • a) 当收集的个人信息超出服务类型的最少信息时,超出部分的个人信息,App 应逐项 征得用户明示同意。
  • b) 当同一 App 有 2 种或 2 种以上服务类型时,App 应允许用户逐项开启和退出服务类 型,开启或退出的方式应易于操作。
  • c) 当用户退出某服务类型后,App 应终止该服务类型收集个人信息的活动,并对仅用 于该服务的个人信息进行删除或匿名化处理。
  • d) 当申请个人信息相关权限或要求用户输入个人信息时,App 应向用户同步明示申请 权限或收集信息的目的。
  • e) App 应向用户提供实时查询已收集个人信息类型的功能;查询结果应以独立界面展 示,且查询方式应易于操作。
  • f) 存在对外共享、转让个人信息的,App 应向用户提供查询数据接收方身份的功能; 查询结果应以独立界面展示,且查询方式应易于操作。
  • g) 在技术可行且不影响终端和服务正常的情况下,App 应优先在用户终端中存储、使 用所收集的个人信息。
  • h) App 应以实现服务所必需的最低合理频率向后台服务器发送个人信息。

所以这么严格,相关部门肯定会有一个规范来统一下发或者管理手机的唯一识别码,来达到“监管”用户的操作

规范来了~

移动智能终端补充设备标识体系

移动安全联盟

移动安全联盟(Mobile Security Alliance,简称MSA)于2017年12月4日成立,由中国信息通信研究院联合终端生产企业、安全企业、高等院校、研究机构、互联网企业以及芯片企业、方案企业等产业链中各个环节的重要机构共同发起。

由各大手机厂商”共同维护”来进行统一、规范化唯一识别码,目前包括的手机厂商有

厂商 版本
小米 MIUI10.2 及以上
vivo FuntouchOS 9 及以上
华为 全版本
OPPO Color OS 7.0 及以上(9 月份正式支持)
Lenovo ZUI 11.4 及以上(9 月中旬正式支持)

体系说明

移动智能终端补充设备标识体系架构共涉及四类实体,包括开发者、开发者开发的应用软件、移动智能终端设备的操作系统、用户及用户使用的设备。为保护用户用户的隐私和标识设备的唯一性,根据不同使用对象和不同用途,基于移动智能终端设备,分别生成设备唯一标识符、匿名设备标识符、开发者匿名设备标识符和应用匿名设备标识符,将这四个设备标识符构成补充设备标识体系。

体系图
体系图

唯一标识符作为普通用户仍然是拿不到,但是能够替代的,我们可以用其他的id,

  • OAID 可与用户数据、账号绑定 用于个性化推荐、广告业务。
  • VAID 多应用之间能够共享的唯一标识,同一个开发者多个应用可以使用,举个例子:司机端和货主端 ,货主端发货刷单,司机端抢单时候可以用vaid判断,是否是同一台设备;缺点是必须是该手机平台的线上应用才能统计到是否是同一个开发者账号下的app,部分厂商,若应用未在其开发者平台后台上架,则认定未非法应用,无 法生成 VAID,手机 LOG 中将会有相关异常值输出。
  • AAID 单个app用于用户统计等,没有VAID的需求情况下 可以使用。

目前移动安全联盟 仍在免费注册阶段,还没有收费制服。作为旁观者,还是尽早注册,毕竟中国的手机市场很大,而且如上的通过谷歌广告的形式获取唯一识别码走不通,利润可想而知。

相关连接

移动安全联盟

全国信息安全标准化技术委员会

谷歌官方文档

小米设备标识体系的说明

Google Advertising Id 获取