Android開發(fā)中匿名設(shè)備標(biāo)識(shí)符OAID使用及初始化
ID說明
- 設(shè)備唯一標(biāo)識(shí)符(UDID):設(shè)備唯一硬件標(biāo)識(shí),設(shè)備生產(chǎn)時(shí)根據(jù)特定的硬件信息生成,可用于設(shè)備的生產(chǎn)環(huán)境及合法性校驗(yàn)。不對(duì)第三方應(yīng)用提供獲取接口,無法通過 SDK 獲取。
- 匿名設(shè)備標(biāo)識(shí)符(OAID):可以連接所有應(yīng)用數(shù)據(jù)的標(biāo)識(shí)符,移動(dòng)智能終端系統(tǒng)首次啟動(dòng)后立即生成,可用于廣告業(yè)務(wù)??梢酝ㄟ^ SDK 獲取到接口狀態(tài)(重置、關(guān)閉)、ID 值。
- 開發(fā)者匿名設(shè)備標(biāo)識(shí)符(VAID):用于開放給開發(fā)者的設(shè)備標(biāo)識(shí)符,可在應(yīng)用安裝時(shí)產(chǎn)生,可用于同一開發(fā)者不同應(yīng)用之間的推薦。可以通過 SDK 獲取到 ID 值。
- 應(yīng)用匿名設(shè)備標(biāo)識(shí)符(AAID):第三方應(yīng)用獲取的匿名設(shè)備標(biāo)識(shí),可在應(yīng)用安裝時(shí)產(chǎn)生,可用于用戶統(tǒng)計(jì)等??梢酝ㄟ^ SDK 獲取到 ID 值。
聲明

下載鏈接
移動(dòng)安全聯(lián)盟官網(wǎng)SDK 獲取地址
覆蓋范圍
| 廠商名稱 | 支持版本 |
|---|---|
| 華為 | HMS 2.6.2及以上 |
| 小米 | MIUI10.2及以上版本 |
| vivo | Android 9及以上版本 |
| oppo | Color OS 7.0及以上版本 |
| Lenovo | ZUI 11.4及以上版本 |
| 三星 | Android 10版本 |
| 魅族 | Android 10版本 |
| 努比亞 | Android 10版本 |
| 中興 | Android 10版本 |
| 華碩 | Android 10版本 |
| 一加 | Android 10版本 |
| 黑鯊 | Android 10版本 |
| 摩托羅拉 | Android 10版本 |
| Freeme OS | Android 10版本 |
調(diào)用方法
1.把oaid_sdk_x.x.x.aar拷貝到項(xiàng)的libs目錄,并設(shè)置依賴,其中x.x.x代表版本號(hào)。
2.將supplierconfig.json拷貝到項(xiàng)目assets目錄下,并修改里邊對(duì)應(yīng)內(nèi)容,特別是需要設(shè)置appid的部分。需要設(shè)置appid的部分需要去對(duì)應(yīng)廠商的應(yīng)用商店里注冊(cè)自己的app。需要注意的是,其中l(wèi)abel部分內(nèi)容無需修改。
3.設(shè)置依賴implementation files(‘libs/oaid_sdk_x.x.x.aar’)
4.設(shè)置gradle編譯選項(xiàng),開發(fā)者可以根據(jù)自己對(duì)平臺(tái)的選擇進(jìn)行合理配置
ndk {
abiFilters 'armeabi-v7a', 'x86', 'arm64-v8a', 'x86_64', 'armeabi'
}
packagingOptions {
doNotStrip "*/armeabi-v7a/*.so"
doNotStrip "*/x86/*.so"
doNotStrip "*/arm64-v8a/*.so"
doNotStrip "*/x86_64/*.so"
doNotStrip "armeabi.so"
}
5.設(shè)置混淆
-keep class XI.CA.XI.**{*;}
-keep class XI.K0.XI.**{*;}
-keep class XI.XI.K0.**{*;}
-keep class XI.vs.K0.**{*;}
-keep class XI.xo.XI.XI.**{*;}
-keep class com.asus.msa.SupplementaryDID.**{*;}
-keep class com.asus.msa.sdid.**{*;}
-keep class com.bun.lib.**{*;}
-keep class com.bun.miitmdid.**{*;}
-keep class com.huawei.hms.ads.identifier.**{*;}
-keep class com.samsung.android.deviceidservice.**{*;}
-keep class org.json.**{*;}
-keep public class com.netease.nis.sdkwrapper.Utils {public <methods>;}
使用
初始化
public class APP extends Application {
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
JLibrary.InitEntry(base);
}
}
設(shè)置回調(diào)
public interface AppIdsUpdater {
void OnValidId(@NonNull JSONObject ids);
}
設(shè)置調(diào)用類
public class MiIdHelper implements IIdentifierListener {
private boolean isSupport;
private String oaid, vaid, aaid;
public JSONObject getDeviceIds(Context cxt) {
long startTime = System.currentTimeMillis();
int code = CallFromReflect(cxt);
long endTime = System.currentTimeMillis();
long time = endTime - startTime;
JSONObject jsonObject = new JSONObject();
try {
jsonObject.put("description", descriptionCode(code));
jsonObject.put("code", code);
jsonObject.put("time", time);
jsonObject.put("isSupport", isSupport);
jsonObject.put("oaid", oaid);
jsonObject.put("vaid", vaid);
jsonObject.put("aaid", aaid);
} catch (Exception e) {
e.printStackTrace();
}
return jsonObject;
}
private int CallFromReflect(Context cxt) {
return MdidSdkHelper.InitSdk(cxt, true, this);
}
@Override
public void OnSupport(boolean isSupport, IdSupplier _supplier) {
this.isSupport = isSupport;
if (_supplier != null) {
this.oaid = _supplier.getOAID();
this.vaid = _supplier.getVAID();
this.aaid = _supplier.getAAID();
_supplier.shutDown();
}
}
private String descriptionCode(int code) {
switch (code) {
case ErrorCode.INIT_ERROR_DEVICE_NOSUPPORT:
return "DEVICE_NOSUPPORT";
case ErrorCode.INIT_ERROR_LOAD_CONFIGFILE:
return "LOAD_CONFIGFILE";
case ErrorCode.INIT_ERROR_MANUFACTURER_NOSUPPORT:
return "MANUFACTURER_NOSUPPORT";
case ErrorCode.INIT_ERROR_RESULT_DELAY:
return "RESULT_DELAY";
case ErrorCode.INIT_HELPER_CALL_ERROR:
return "HELPER_CALL_ERROR";
default:
return "SUCCESS";
}
}
}
獲取OAID
MiIdHelper miIdHelper = new MiIdHelper(new AppIdsUpdater() {
@Override
public void OnValidId(@NonNull JSONObject ids) {
Log.e("OAID", ids.toString());
}
});
miIdHelper.getDeviceIds(getApplicationContext());
以上就是Android開發(fā)中匿名設(shè)備標(biāo)識(shí)符OAID使用及初始化的詳細(xì)內(nèi)容,更多關(guān)于Android開發(fā)匿名設(shè)備標(biāo)識(shí)符OAID的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Android中Gallery和ImageSwitcher的使用實(shí)例
今天小編就為大家分享一篇關(guān)于Android中Gallery和ImageSwitcher的使用實(shí)例,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧2019-03-03
Android自定義控件實(shí)現(xiàn)不規(guī)則區(qū)域點(diǎn)擊事件
這篇文章主要為大家詳細(xì)介紹了Android自定義控件實(shí)現(xiàn)不規(guī)則區(qū)域點(diǎn)擊事件,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-05-05
Android BaseAdapter應(yīng)用實(shí)例
這篇文章主要介紹了Android BaseAdapter應(yīng)用方法,結(jié)合生成聯(lián)系人Items的實(shí)例形式分析了BaseAdapter的使用技巧,需要的朋友可以參考下2016-01-01
Android模擬用戶點(diǎn)擊的實(shí)現(xiàn)方法
這篇文章主要給大家介紹了關(guān)于Android模擬用戶點(diǎn)擊的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)學(xué)習(xí)學(xué)習(xí)吧。2018-02-02
Android 自定義view之畫圖板實(shí)現(xiàn)方法
本文重在對(duì)自定義view,以及其常用類,常用方法的初步了解,提供一個(gè)思路,效果是其次,畫板只是例子,需要的朋友可以參考下2018-01-01
Android Flutter實(shí)現(xiàn)圖片滑動(dòng)切換效果
Flutter 為了簡化開發(fā),提供了不少轉(zhuǎn)換動(dòng)畫組件,這類組件通常命名為 xxTransition。本篇要介紹的就是 SlideTransition,并用它實(shí)現(xiàn)圖片滑動(dòng)切換效果,感興趣的可以了解一下2022-04-04
Android ListView列表控件的介紹和性能優(yōu)化
這篇文章主要介紹了Android ListView列表控件的介紹和性能優(yōu)化,需要的朋友可以參考下2017-06-06

