目录

写在最前面

写在前面

说明文档

SDK使用过程:

代码实现


 

写在最前面

      看评论有好些朋友遇到了一些我没遇到的问题,而且看官方文档也已经更新,想着这些问题官方是不是已经优化解决了,就按着最新的文档把项目重新捋了一遍。基于《移动智能终端补充设备标识体系统一调用SDK开发者说明文档v1.10》和miit_mdid_1.0.10.aar 更新了一下项目。项目地址:GitHub  https://github.com/haoguibao/OaidDemo/tree/master

      文档和sdk我放网盘了。链接: https://pan.baidu.com/s/1bAoi8h2s2DTO1vWKPdkmQg 提取码: mia1   当然了官网上也能找到最新的文档和sdk来下载(官网地址:http://www.msa-alliance.cn/ )。另外编译了一个可运行的OaidDemo.apk,也在上面网盘里面放着,可以直接安装一下运行看行不行。

       把之前项目中获取IMEI和权限等代码删除了,仅保留了获取OAID的方法,仅供参考。

       现在是腊月廿七,再有几天就要过年了,提前祝大家新年快乐,身体健康,发财不发福!(* ̄︶ ̄)

 

****************************************************以下是原文********************************************************

写在前面

前段时间在登录vivo开放平台时,看见官方发公告了,以后逐渐要禁止获取IMEI,使用OAID(匿名设备标识符)来替代IMEI在app的作用(另外我们也可以获取VAID和AAID,下文会提到),所以找到官方文档,写个获取OAID的Demo,权当为以后替换IMEI做个铺垫。

说明文档

下面的内容基于《移动智能终端补充设备标识体系统一调用SDK开发者说明文档v1.9》来展开,后期官方文档也会持续更改,如需获取最新文档或sdk,请关注移动安全联盟MSA官网:http://www.msa-alliance.cn/

SDK支持的终端范围:(具体支持时间得看相应厂商的正式公告)

厂商 版本
小米 MIUI10.2 及以上
vivo FuntouchOS 9 及以上
华为 全版本
OPPO Color OS 7.0 及以上(10月份正式支持)
Lenovo ZUI 11.4 及以上(10月中旬正式支持)
华硕 Android Q(10月份会正式支持)
魅族 10月份将支持
三星 10月份将支持
中兴 10月份将支持
努比亚 10月份将支持

术语和定义:

英文缩写 中文名称 英文全称 长度
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位

SDK使用过程:

目前(截止2019-9-29)最新sdk链接: https://pan.baidu.com/s/1C9k9ntev300-z7FzaZfkYw 提取码: 6qv2

1、把 miit_mdid_x.x.x.aar 拷贝到项的 libs 目录,并设置依赖,其中 x.x.x代表版本号。

2、将 supplierconfig.json 拷贝到项目 assets 目录下。(暂时不用修改,只需原样放到assets目录下即可,这个是给未来做准备的。如果想要使用VAID,可修改里边对应内容,特别是需要设置 appid 的部分,要去对应厂商的应用商店里注册自己的 app,来获取对应appid。)

3、设置依赖

implementation files('libs/miit_mdid_x.x.x.aar')

4、设置混淆(不需混淆的可忽略)

-keep class com.bun.miitmdid.core.** {*;}

5、设置gradle编译选项。(自己合理配置即可,大家在项目中大都已经配置过)

6、代码调用

     a、初始化SDK

           在应用的 application 的 attachBaseContext方法中调用方法: JLibrary.InitEntry(base);

     b、获取设备ID,详见OaidDemo中的MiitHelper.java 。(可以直接把MiitHelper.java类复制到自己的项目中)

    /*     * 通过反射调用,解决android 9以后的类加载升级,导至找不到so中的方法     *     * */    private int CallFromReflect(Context cxt) {        return MdidSdkHelper.InitSdk(cxt, true, this);    }

      c、初始化sdk时可能返回的错误码

错误信息 说明
INIT_ERROR_MANUFACTURER_NOSUPPORT 1008611 不支持的厂商
INIT_ERROR_DEVICE_NOSUPPORT 1008612 不支持的设备
INIT_ERROR_LOAD_CONFIGFILE 1008613 加载配置文件出错
INIT_ERROR_RESULT_DELAY 1008614 信息将会延迟返回,获取数据可能在异步线程,取决于设备
INIT_HELPER_CALL_ERROR 1008615 反射调用出错

代码实现

Demo已经上传GitHub,链接:https://github.com/haoguibao/OaidDemo/tree/master

具体的获取调用代码在DevicesUtil.java类里面,整合了获取OAID,IMEI,AndroidId和UUID等方法。

获取的标识符优先级为oaid > IMEI > AndroidId

    /**     * 获取唯一标识idfa     * 

* 支持获取oaid的,优先获取oaid, * 其次是IMEI, * 如果没有得到IMEI权限,则获取AndroidId * * @param context * @return */ public static String getIdfa(Context context) { String idfa; if (MyApplication.isSupportOaid()) { idfa = MyApplication.getOaid(); } else { idfa = getUniqueId(context); } return idfa; }

写了半天,发现就跟抄了一遍文档一样(捂脸),权当是篇笔记吧。

更多相关文章

  1. 第一部分:开发前的准备-第二章 基础入门
  2. 苹果通知中心服务ANCS协议分析二
  3. Android(安卓)BLE学习(一): Android搜索BLE设备
  4. Android(安卓)adb网络连接Offline和 adb断开连接
  5. 201204NEWS
  6. 为Android虚拟设备(AVD)增加物理键盘支持
  7. [Android]设备中的分区信息详解
  8. 【Sublinux】Station P1在Android上使用Plex
  9. android与PC直连的socket问题

随机推荐

  1. Android(安卓)Xml文件生成,Xml数据格式写
  2. android studio 快捷键描述和设置
  3. Android(安卓)package属性、package name
  4. Android(安卓)Studio 导入 GreenDao
  5. Android入门学习笔记整理(二)
  6. adb通过wifi连接android设备的方法
  7. android字体大小多屏幕适配
  8. android sqlite 数据类型
  9. Android(安卓)4.4环境搭建——Android(安
  10. android SimpleOnGestureListener详解