获取GAID得到00000000-0000-0000-0000-000000000000的问题

最近大老板查看数据发现有用户上报的GAID有00000000-0000-0000-0000-000000000000的情况。先查代码,发现不是程序写死的常量值,又怀疑是手机的问题,是个例,看了手机的型号,ADVAN出的,印尼最大的手机制造商,那就不像是手机的问题。

程序里是通过AdvertisingIdClient.getAdvertisingIdInfo(context).getId()获取的GAID,然后就查了Google的官方文档,果然发现了端倪。明确说明了用户如果设置了禁止广告追踪,这个getId()就会返回这串0,而且如果适配Android13的话还要多申请一个权限。没有Android12的机器,无法验证这个问题。

下面是AdvertisingIdClient.Info.getId()的说明文档

public String getId ()                                                                          
Retrieves the advertising ID.

Starting from late 2021, on Android 12 devices, when isLimitAdTrackingEnabled() is true, the returned value of this API will be 00000000-0000-0000-0000-000000000000 regardless of the app’s target SDK level.

In early 2022, this change will be applied to all the devices that support Google Play services.

Apps with target API level set to 33 (Android 13) or later must declare the normal permission com.google.android.gms.permission.AD_ID as below in the AndroidManifest.xml in order to use this API.

This permission will be granted when the app is installed.
If this permission is not declared, the returned value will be 00000000-0000-0000-0000-000000000000 starting early 2022.
Until then, to help developers, a warning line is logged if the permission is missing when the app targets API level 33 (Android 13) or higher.
This warning line is under the Log tag AdvertisingIdSettings.

 <uses-permission android:name="com.google.android.gms.permission.AD_ID"/>
If you need to prevent the permission from getting merged into your app through dependencies such as SDKs, include the below element in your manifest instead.


<uses-permission android:name="com.google.android.gms.permission.AD_ID"
 tools:node="remove"/>
For apps with target API level set to 32 (Android 12L) or older, this permission is not needed.

See Advertising ID Play Console Help for more details.

 

AdvertisingIdClient.Info.isLimitAdTrackingEnabled()的说明文档

public boolean isLimitAdTrackingEnabled ()                                                                  
Retrieves whether the user has limit ad tracking enabled or not.

When the returned value is true, the returned value of getId() will always be 00000000-0000-0000-0000-000000000000 starting with Android 12.

 

热门相关:无量真仙