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

官网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 后发送到 [email protected] 申请,注意每个包名对应一个签名,申请时需要将所需申请的全部包名填写到表格中。

证书有效期一年,为避免证书过期影响 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 目前提供以下设备的获取方式:

Android使用移动智能终端补充设备标识获取OAID_第1张图片

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

你可能感兴趣的:(Android,android,OAID,唯一标识)