官网http://www.msa-alliance.cn/col.jsp?id=120

  1. 首先到官网注册账号,申请下载相关sdk和授权证书

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

3.supplierconfig.json 拷贝到项目 assets 目录下,并修改里边对应内容,特别是需要设置 appid 的部分。需要设置 appid 的部分需要去对应厂商的应用商店里注册自己的 app。需要注意的是,其中 label 部分内容无需修改,不用增加应用商店。

4.将证书文件(应用包名.cert.pem)拷贝到项目 assets 目录下

证书需要填写 example_batch.csv 后发送到 msa@caict.ac.cn 申请,注意每个包名对应一个签名,申请时需要将所需申请的全部包名填写到表格中。

证书有效期一年,为避免证书过期影响 APP 获取 ID,建议证书信息可以从后台服务器获取,或者当调用 oaid SDK 接口提示证书无效时,调用后台接口及时更新证书信息,并且快到期时及时提前重新申请证书。

5.设置依赖

implementation files(‘libs/oaid_sdk_x.x.x.aar’)

6.设置 gradle 编译选项,开发者可以根据自己对平台的选择进行合理配置

ndk {abiFilters 'armeabi-v7a', 'x86', 'arm64-v8a', 'x86_64'
}

考虑到 sdk 兼容性,sdk 包默认集成了常用 abi 的 so,包括 armeabi-v7a, arm64-v8a, x84, x84_64 共四种。如果需要减小 SDK 体积,可以使用压缩工具打开 aar 文件,手动删除多余的架构。

7.设置混淆

# sdk
-keep class com.bun.miitmdid.** { *; }
-keep interface com.bun.supplier.** { *; }
# asus
-keep class com.asus.msa.SupplementaryDID.** { *; }
-keep class com.asus.msa.sdid.** { *; }
# freeme
-keep class com.android.creator.** { *; }
-keep class com.android.msasdk.** { *; }
# huawei
-keep class com.huawei.hms.ads.** { *; }
-keep interface com.huawei.hms.ads.** {*; }
# lenovo
-keep class com.zui.deviceidservice.** { *; }
-keep class com.zui.opendeviceidlibrary.** { *; }
# meizu
-keep class com.meizu.flyme.openidsdk.** { *; }
# nubia
-keep class com.bun.miitmdid.provider.nubia.NubiaIdentityImpl
{ *; }
# oppo
-keep class com.heytap.openid.** { *; }
# samsung
-keep class com.samsung.android.deviceidservice.** { *; }
# vivo
-keep class com.vivo.identifier.** { *; }
# xiaomi
-keep class com.bun.miitmdid.provider.xiaomi.IdentifierManager
{ *; }
# zte
-keep class com.bun.lib.** { *; }
# coolpad
-keep class com.coolpad.deviceidsupport.** { *; }

8.代码调用

a、在 application 类中初始化 SDK 包

System.loadLibrary("msaoaidsec");

b、加载证书内容

MdidSdkHelper.InitCert (Context context, String certContent);

c、调用方法获取补充标识符,示例代码详见附件 DemoHelper.java

//获取部分 id 信息
int code = MdidSdkHelper.InitSdk(cxt, isSDKLogOn, isGetOAID,
isGetVAID, isGetAAID, IIdentifierListener);
//获取全部 id 信息
int code = MdidSdkHelper.InitSdk(cxt, isSDKLogOn,
IIdentifierListener);

以上就是官网给出的一个sdk的集成与调用,比较简单

这次主要分享的是部分机型在“支持的机型且被限制获取OAID”的前提下的操作方法:

①小米:手机系统设置--隐私保护--保护隐私(顶部)--防追踪--虚拟身份ID(最底部)--虚拟身份ID授权管理--“应用名”,这个页面的开关是否打开,打开后重启APP。

②华为:手机系统设置--隐私--广告与隐私--限制广告追踪,这个页面的开关是否关闭,关闭后重启APP。

③VIVO:手机系统设置-安全与隐私-更多安全设置-广告与隐私(或根据兴趣内容推荐)-个性化广告推荐,这个页面的开关是否打开,打开后重启APP。

④OPPO/真我:手机系统设置-隐私-设备标识与广告-限制广告跟踪,这个页面的开关是否关闭,关闭后重启APP。(因系统缓存,以上操作完成后仍可能存在相关问题,请关闭开关2小时后重试)

⑤魅族:手机系统设置-隐私和权限-应用跟踪控制-允许“应用名”应用跟踪,打开后重启APP。

⑥荣耀:手机系统设置-应用-应用管理-HMS Core-右上角设置齿轮图标-广告-限制广告跟踪,这个页面的开关是否关闭,关闭后重启APP。

⑦一加:手机系统设置-隐私-广告-“选择停用广告个性化功能“开关关闭,关闭后重启APP。(若以上操作完成后仍可能存在相关问题,请参考OPPO手机的设置方式)

⑧联想:手机系统设置-搜索“安全和隐私”--限制广告跟踪,这个页面的开关是否关闭,关闭后重启APP。

以上方式都是真机实测过的,欢迎补充其他机型!

还有一种开源的替代方式CNAdID,我还没试过,有兴趣的同学可以尝试一下

其中 OAID 是由手机厂联盟提供的广告跟踪标示,CNAdID 是数字联盟“可信 ID ”的免费版

https://gitee.com/shuzilmopensource/Get_Oaid_CNAdid

OAID 目前提供以下设备的获取方式:

CNAdID 目前提供安卓全平台获取方式。

Android使用移动智能终端补充设备标识获取OAID相关推荐

  1. Android获取OAID

    目录 写在最前面 写在前面 说明文档 SDK使用过程: 代码实现 写在最前面 看评论有好些朋友遇到了一些我没遇到的问题,而且看官方文档也已经更新,想着这些问题官方是不是已经优化解决了,就按着最新的文档 ...

  2. Android 10 + 适用于国内各大手机厂商的开放匿名设备标识(OAID),若不支持OAID则随机生成一个全局唯一标识(GUID)

    源码见:https://github.com/gzu-liyujiang/Android_CN_OAID 本项目用于获取国内各大Android手机厂商的开放匿名设备标识(OAID).遵循谷歌官方使用A ...

  3. uniapp 获取设备唯一标识(OAID、AAID、AndroidID、IMEI等)插件 Ba-IdCode

    简介(下载地址) Ba-IdCode 是一款可以获取国内各大手机厂商 OAID(开放匿名设备标识)及海外手机平台 AAID(安卓广告标识)的uniapp插件.另外也支持获取 IMEI/MEID.And ...

  4. Android Q(10.0)上IMEI获取不到;Android Q(10.0)上OAID替代IMEI;OAID获取方式

    最近公司研发的 Android Q (android 10)的5G手机,然后就开始适配Android Q:发现无系统权限的应用无法获取到可作为唯一标识的IMEI,MAC等等:由于项目(负一屏/浏览器/ ...

  5. android网络获取经纬,Android中透过GPS或NetWork获取当前位置的经纬度

    Android中通过GPS或NetWork获取当前位置的经纬度 private double latitude=0.0; private double longitude =0.0; Location ...

  6. 最简单也最难——如何获取到Android控件的高度,获取android控件

    最简单也最难--如何获取到Android控件的高度,获取android控件 问题 如何获取一个控件的长和高,相信很多朋友第一眼看见这个问题都会觉得很简单,直接在onCreate里面调用getWidth ...

  7. android获取当前位置经纬度,Android中通过GPS或NetWork获取当前位置的经纬度

    今天在Android项目中要实现一个通过GPS或NetWork来获取当前移动终端设备的经纬度功能.要实现该功能要用到Android Framework 中的 LocationManager 类.下面我 ...

  8. android 电量详情,Android应用开发之Android 8.0 电池-)耗电详情获取方法

    本文将带你了解Android应用开发之Android 8.0 电池-)耗电详情获取方法,希望本文对大家学Android有所帮助. Android 8.0 电池-)耗电详情获取方法 主要介绍UI位置和基 ...

  9. android 获取wifi的ip地址吗,Android开发实现在Wifi下获取本地IP地址的方法

    本文实例讲述了Android开发实现在Wifi下获取本地IP地址的方法.分享给大家供大家参考,具体如下: 代码核心介绍: WifiManager类提供了对设备Wifi功能的管理,包括Wifi开关的打开 ...

最新文章

  1. IE的安全性设定增加“我的电脑”的安全性设定
  2. RxJS mergeMap 学习笔记
  3. AWS Messaging Services:选择合适的服务
  4. JDK 9 REPL:入门
  5. 虚继承 - C++快速入门29
  6. 拆分工作簿为多个文件_能不能将总表快速拆分为多个工作簿?当然!
  7. java底层 文件操作,java底层是怎样对文件操作的
  8. 数据福利|各种分辨率DEM数据下载
  9. 2021最新15个App跨平台开发框架
  10. WineQQ2012 最新下载
  11. Mac系统升级中途断电/关机,升级/开机失败的恢复方法
  12. 2020美容师(初级)考试题库及美容师(初级)模拟考试
  13. 项目总结(打开一个新页面下载exsel表格或者文档模板)
  14. mysql 8.0.13解压版安装_mysql 8.0.13 解压版安装配置方法图文教程
  15. npm安装electron时报Error: EPERM: operation not permitted, scandir.....
  16. mysql第一章试题_MySQL基础-第一章
  17. 数字化和社会化商业转型中首席信息官的作用
  18. win10显示隐藏文件_如何在Mac上显示隐藏文件——macw
  19. 调用百度地图只显示网格的问题
  20. PowerShell操作DNS创建SRV记录

热门文章

  1. kettle转换中文数据出现乱码
  2. yolov3学习笔记-labelImg数据标注工具安装
  3. Matlab信号处理常用函数
  4. 用excel来抽取考官-面试考管抽取表
  5. java自定义统计报表_用自定义统计图实现曲线图
  6. nest.js入门一
  7. java实现将阿拉伯数字转成中文大写工具类
  8. html获取cookiejs,javascript设置和获取cookie的方法实例详解
  9. S32K144之SDK版:FLASH(内部模拟EEPROM)模块应用
  10. 机器学习算法(二十四):最近邻算法 KNN(k-nearest neighbor)