android-Google广告id(adid)获取

android-Google广告id(adid)获取


前篇

  • 从2021年末开始,在Android 12设备上,当isLimitAdTrackingEnabled()为true时,无论app的目标SDK级别如何,这个API的返回值都将是00000000-0000-0000-0000-0000-00000000000。

接入 adid

  1. API level set to 33 (Android 13) 之后的必须在 AndroidManifest.xml 添加权限

    1
    <uses-permission android:name="com.google.android.gms.permission.AD_ID" />

    如果您需要防止权限通过依赖项(如SDK)合并到您的应用程序中,请改为在清单中包含以下元素。

    1
    2
    3
    4
    5
    6
    7
    8
        <uses-permission android:name="com.google.android.gms.permission.AD_ID" tools:node="remove"/>

    2. gradle 引入库

    ```json
    dependencies {
    implementation 'com.google.android.gms:play-services-ads-identifier:17.0.1'
    }
  2. 代码获取

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    // 获取 Google 广告 id
    public static String getAdid() {
    try {
    AdvertisingIdClient.Info adInfo = AdvertisingIdClient.getAdvertisingIdInfo(ActivityMgr.getIns().getActivity());
    boolean isLimit = Build.VERSION.SDK_INT >= Build.VERSION_CODES.S && adInfo.isLimitAdTrackingEnabled(); // Android 12+ 才开始限制
    LogUtil.TD(TAG, "--- adid is isLimit: %b", isLimit);
    return isLimit ? null : adInfo.getId();
    } catch (Exception e) {
    LogUtil.E("--- getAdvertisingIdInfo error: %s", e.getMessage());
    e.printStackTrace();
    return null;
    }
    }

广告 id 限制

  1. settings -> google -> ads, opt out 打开表示限制获取 adid, 默认是关闭, 可以获取

    image-20220324170827825