Android开发中匿名设备标识符OAID使用及初始化

 更新时间:2022年04月27日 17:31:17   作者:ZH-黑夜  
这篇文章主要为大家介绍了Android开发中匿名设备标识符OAID使用及初始化,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

ID说明 

  • 设备唯一标识符(UDID):设备唯一硬件标识,设备生产时根据特定的硬件信息生成,可用于设备的生产环境及合法性校验。不对第三方应用提供获取接口,无法通过 SDK 获取。
  • 匿名设备标识符(OAID):可以连接所有应用数据的标识符,移动智能终端系统首次启动后立即生成,可用于广告业务。可以通过 SDK 获取到接口状态(重置、关闭)、ID 值。
  • 开发者匿名设备标识符(VAID):用于开放给开发者的设备标识符,可在应用安装时产生,可用于同一开发者不同应用之间的推荐。可以通过 SDK 获取到 ID 值。
  • 应用匿名设备标识符(AAID):第三方应用获取的匿名设备标识,可在应用安装时产生,可用于用户统计等。可以通过 SDK 获取到 ID 值。

声明

下载链接

移动安全联盟官网SDK 获取地址

覆盖范围

厂商名称支持版本
华为HMS 2.6.2及以上
小米MIUI10.2及以上版本
vivoAndroid 9及以上版本
oppoColor OS 7.0及以上版本
LenovoZUI 11.4及以上版本
三星Android 10版本
魅族Android 10版本
努比亚Android 10版本
中兴Android 10版本
华硕Android 10版本
一加Android 10版本
黑鲨Android 10版本
摩托罗拉Android 10版本
Freeme OSAndroid 10版本

调用方法

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

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

3.设置依赖implementation files(‘libs/oaid_sdk_x.x.x.aar’)

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

 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.设置混淆

-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);
    }
}

设置回调

public interface AppIdsUpdater {
        void OnValidId(@NonNull JSONObject ids);
}

设置调用类

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开发中匿名设备标识符OAID使用及初始化的详细内容,更多关于Android开发匿名设备标识符OAID的资料请关注脚本之家其它相关文章!

相关文章

  • Android控件实现水滴效果

    Android控件实现水滴效果

    这篇文章主要为大家详细介绍了Android控件实现水滴效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-02-02
  • Android中Gallery和ImageSwitcher的使用实例

    Android中Gallery和ImageSwitcher的使用实例

    今天小编就为大家分享一篇关于Android中Gallery和ImageSwitcher的使用实例,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-03-03
  • Android自定义控件实现不规则区域点击事件

    Android自定义控件实现不规则区域点击事件

    这篇文章主要为大家详细介绍了Android自定义控件实现不规则区域点击事件,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-05-05
  • Android BaseAdapter应用实例

    Android BaseAdapter应用实例

    这篇文章主要介绍了Android BaseAdapter应用方法,结合生成联系人Items的实例形式分析了BaseAdapter的使用技巧,需要的朋友可以参考下
    2016-01-01
  • Android模拟用户点击的实现方法

    Android模拟用户点击的实现方法

    这篇文章主要给大家介绍了关于Android模拟用户点击的实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学学习学习吧。
    2018-02-02
  • Android多媒体教程之播放视频的四种方法

    Android多媒体教程之播放视频的四种方法

    这篇文章主要给大家介绍了关于Android多媒体教程之播放视频的四种方法,分别是通过intent的方式,调用系统自带的播放器、使用VideoView、MediaPlayer + SurfaceView及MediaPlayer + TextureView等方法,需要的朋友们可以参考学习。
    2017-06-06
  • Android 自定义view之画图板实现方法

    Android 自定义view之画图板实现方法

    本文重在对自定义view,以及其常用类,常用方法的初步了解,提供一个思路,效果是其次,画板只是例子,需要的朋友可以参考下
    2018-01-01
  • Android Flutter实现图片滑动切换效果

    Android Flutter实现图片滑动切换效果

    Flutter 为了简化开发,提供了不少转换动画组件,这类组件通常命名为 xxTransition。本篇要介绍的就是 SlideTransition,并用它实现图片滑动切换效果,感兴趣的可以了解一下
    2022-04-04
  • Android引用arr包的两种方法

    Android引用arr包的两种方法

    这篇文章介绍了android中引用arr包的两种方法,jar包和arr包,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友参考下吧
    2018-11-11
  • Android ListView列表控件的介绍和性能优化

    Android ListView列表控件的介绍和性能优化

    这篇文章主要介绍了Android ListView列表控件的介绍和性能优化,需要的朋友可以参考下
    2017-06-06

最新评论