首页 > 其他分享 >不依赖SDK的获取OAID -- OAIDHelper

不依赖SDK的获取OAID -- OAIDHelper

时间:2022-10-24 14:55:45浏览次数:88  
标签:初始化 OAID -- OAIDHelper 获取 public SDK

OAIDHelper

OAID 作为广告标识符,在OAID_SDK_1.0.25版本及以前支持直接使用,但1.0.25版本支持的设备覆盖不够全面,1.0.26版本及以后需要根据应用包名申请证书文件,且需要企业认证才可以申请账号。
企业用户需要通过MSA官网申请账号和证书,使用官方SDK接入。
个人开发者可以尝试使用本工程获取设备的OAID
OAID-SDK 各版本文档与 AAR 见 OAIDViewer


引入

增加仓库

repositories {
    // ...
    maven { url 'https://jitpack.io' }
}

增加依赖

rependencies {
    implementation 'com.github.MaYiFei1995:OAIDHelper:1.1.0'
}

注意

AGP4.0 以下版本会无法识别 AndroidManifest 中的<queries>标签,建议升级版本。

也可以参照Android_CN_OAID_ISSUES_26,在 AndroidManifest 中增加 <queries tools:node="remove" />

使用

说明

public class OAIDHelper {
    
    /**
     * 返回单例
     */
    public static OAIDHelper get();

    /**
     * 是否优先使用OAID-SDK获取OAID
     * 需要调用 {@link #init(Application, InitListener)} 方法前配置
     *
     * isUseSdk == true 时,会尝试通过SDK接口获取,返回失败后再尝试调用系统方法获取
     * 且当SDK版本大于1.0.25时,要确保调用初始化前已按照文档配置证书文件
     * isUseSdk == false 时,直接尝试调用系统方法获取
     *
     * @param isUseSdk 默认使用
     */
    public OAIDHelper useSdk(boolean isUseSdk);

    /**
     * 初始化
     */
    public void init(@NonNull Application application, @Nullable InitListener initListener);

    /**
     * 获取OAID,可能为空,不会根据初始化结果重复获取
     */
    @Nullable
    public String getOaid();

}
/**
 * 初始化回调
 */
public interface InitListener {

    /**
     * 初始化成功,已获取到OAID,可能为空
     * 返回为空时,可以根据需求使用其他信息替代
     */
    void onSuccess(@Nullable String oaid);

    /**
     * 初始化失败,无法获取OAID
     *
     * @param error 错误信息,见 errMsg
     */
    void onFailure(@NonNull OAIDError error);

}

Demo

AndroidId等获取见app/MainActivity

    OAIDHelper.get().useSdk(false).init(application, object : OAIDHelper.InitListener {

        override fun onSuccess(oaid: String?) {
            Log.e("Mai", "on init oaid success: $oaid")
        }

        override fun onFailure(error: OAIDError?) {
            Log.e("Mai", "on init oaid error: $error")
        }

    })

感谢

标签:初始化,OAID,--,OAIDHelper,获取,public,SDK
From: https://www.cnblogs.com/maiiiii/p/16821448.html

相关文章

  • Netty入门-Handler & Pipeline
    3.4、Handler&PipelineChannelHandler用来处理Channel上的各种事件,分为入站、出站两种。所有ChannelHandler被连成一串,就是Pipeline入站处理器通常是ChannelIn......
  • 华为云数据库 GaussDB(for MySQL),让企业无忧数据恢复
    可能很多网络运营单位在数字化转型过程中都遇见过因为停电导致信息数据丢失,进而致使整个网络运营单位的云上业务被迫中断这样的问题?这时候网络运营单位需要探索到业务中断......
  • 单元测试问题
    1、问题:  2、原因:确定两个条件:1、项目跟目录下有启动类2、测试目录跟项目目录一致  3、解决: ......
  • 熟悉javaweb过程中遇到的问题-01
    Cause:org.apache.ibatis.builder.BuilderException:ErrorparsingSQLMapperConfiguration.Cause:org.apache.ibatis.builder.BuilderException:Errorcreatingd......
  • 调用layer内部js方法
    调用layer内部名为Func的方法$("#layui-layer-iframe"+layerId)[0].contentWindow.Func();获取layerIdlayerId=layer.open({type:2,......
  • BrowserModule has already been loaded. If you need access to common directives s
    错误信息:BrowserModulehasalreadybeenloaded.IfyouneedaccesstocommondirectivessuchasNgIfandNgForfromalazyloadedmodule,importCommonModulein......
  • 学一点是一点
    202210.17-10.21@Repository注解的作用_@Hmily@的博客-CSDN博客_repository注解的作用 10.24-10.28 DTO层和Model层的区别_--Alvin--的博客-CSDN博客_dtomodel......
  • 污水处理厂数字孪生技术,可高效提升工作效率!
    随着科学技术的不断发展,虚拟现实、深度学习、全域感知等各领域的技术发展不断迎来突破,数字孪生也因此应运而生。如今数字孪生技术在各个行业有广泛的应用场景,污水处理厂也......
  • 实验5:开源控制器实践——POX
    (一)基本要求1.搭建下图所示SDN拓扑,协议使用OpenFlow1.0,控制器使用部署于本地的POX(默认监听6633端口)sudomn--topo=single,3--mac--controller=remote,ip=127.0.0.1,......
  • vue2面试题
    面试题3)谈谈对vue生命周期的理解 Vue实例从创建到销毁的过程,就是生命周期,生命周期总共分为三个阶段:初始化、更新、销毁 1)初始化和挂载阶段 *beforeCreate()实例......