Android開(kāi)發(fā)中匿名設(shè)備標(biāo)識(shí)符OAID使用及初始化
ID說(shuō)明
- 設(shè)備唯一標(biāo)識(shí)符(UDID):設(shè)備唯一硬件標(biāo)識(shí),設(shè)備生產(chǎn)時(shí)根據(jù)特定的硬件信息生成,可用于設(shè)備的生產(chǎn)環(huán)境及合法性校驗(yàn)。不對(duì)第三方應(yīng)用提供獲取接口,無(wú)法通過(guò) SDK 獲取。
- 匿名設(shè)備標(biāo)識(shí)符(OAID):可以連接所有應(yīng)用數(shù)據(jù)的標(biāo)識(shí)符,移動(dòng)智能終端系統(tǒng)首次啟動(dòng)后立即生成,可用于廣告業(yè)務(wù)??梢酝ㄟ^(guò) SDK 獲取到接口狀態(tài)(重置、關(guān)閉)、ID 值。
- 開(kāi)發(fā)者匿名設(shè)備標(biāo)識(shí)符(VAID):用于開(kāi)放給開(kāi)發(fā)者的設(shè)備標(biāo)識(shí)符,可在應(yīng)用安裝時(shí)產(chǎn)生,可用于同一開(kāi)發(fā)者不同應(yīng)用之間的推薦。可以通過(guò) SDK 獲取到 ID 值。
- 應(yīng)用匿名設(shè)備標(biāo)識(shí)符(AAID):第三方應(yīng)用獲取的匿名設(shè)備標(biāo)識(shí),可在應(yīng)用安裝時(shí)產(chǎn)生,可用于用戶(hù)統(tǒng)計(jì)等??梢酝ㄟ^(guò) SDK 獲取到 ID 值。
聲明
下載鏈接
移動(dòng)安全聯(lián)盟官網(wǎng)SDK 獲取地址
覆蓋范圍
廠商名稱(chēng) | 支持版本 |
---|---|
華為 | 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è)置依賴(lài),其中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)容無(wú)需修改。
3.設(shè)置依賴(lài)implementation files(‘libs/oaid_sdk_x.x.x.aar’)
4.設(shè)置gradle編譯選項(xiàng),開(kāi)發(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)用類(lèi)
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開(kāi)發(fā)中匿名設(shè)備標(biāo)識(shí)符OAID使用及初始化的詳細(xì)內(nèi)容,更多關(guān)于Android開(kāi)發(fā)匿名設(shè)備標(biāo)識(shí)符OAID的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Android中Gallery和ImageSwitcher的使用實(shí)例
今天小編就為大家分享一篇關(guān)于Android中Gallery和ImageSwitcher的使用實(shí)例,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2019-03-03Android自定義控件實(shí)現(xiàn)不規(guī)則區(qū)域點(diǎn)擊事件
這篇文章主要為大家詳細(xì)介紹了Android自定義控件實(shí)現(xiàn)不規(guī)則區(qū)域點(diǎn)擊事件,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-05-05Android BaseAdapter應(yīng)用實(shí)例
這篇文章主要介紹了Android BaseAdapter應(yīng)用方法,結(jié)合生成聯(lián)系人Items的實(shí)例形式分析了BaseAdapter的使用技巧,需要的朋友可以參考下2016-01-01Android模擬用戶(hù)點(diǎn)擊的實(shí)現(xiàn)方法
這篇文章主要給大家介紹了關(guān)于Android模擬用戶(hù)點(diǎn)擊的實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)學(xué)習(xí)學(xué)習(xí)吧。2018-02-02Android 自定義view之畫(huà)圖板實(shí)現(xiàn)方法
本文重在對(duì)自定義view,以及其常用類(lèi),常用方法的初步了解,提供一個(gè)思路,效果是其次,畫(huà)板只是例子,需要的朋友可以參考下2018-01-01Android Flutter實(shí)現(xiàn)圖片滑動(dòng)切換效果
Flutter 為了簡(jiǎn)化開(kāi)發(fā),提供了不少轉(zhuǎn)換動(dòng)畫(huà)組件,這類(lèi)組件通常命名為 xxTransition。本篇要介紹的就是 SlideTransition,并用它實(shí)現(xiàn)圖片滑動(dòng)切換效果,感興趣的可以了解一下2022-04-04Android ListView列表控件的介紹和性能優(yōu)化
這篇文章主要介紹了Android ListView列表控件的介紹和性能優(yōu)化,需要的朋友可以參考下2017-06-06