不依赖SDK的获取OAID -- OAIDHelper

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

    })

感谢

posted on 2022-10-24 14:50  maiiiiii  阅读(840)  评论(0编辑  收藏  举报

导航