androidreact-nativeexpogoogle-playsegment

When using `expo-analytics-segment`, do I have to provide the Advertising ID myself?


I'm about to submit a build to Google Play Store and the Play console now has this question I have to answer:

Screenshot of the Google Play Console. A question regarding Advertising ID needs answering.

This question asks "Does your app use advertising ID" and has some further info:

Android 13 (API 33) introduces changes to advertising ID. Apps that use advertising ID and target Android 13 or later must declare the com.google.android.gms.permission.AD_ID permission in their app manifest. If you don't include this permission, your advertising identifier will be zeroed out, any attempts to access the identifier will receive a string of zeros instead of the identifier. Learn more

We'll use this declaration to provide safeguards in Play Console. If you say that your app uses advertising ID, we will block releases that don't include the com.google.android.gms.permission.AD_ID permission in the manifest file when targeting Android 13. When we block these releases, we will remind you to add the permission. If your release doesn't need advertising ID, you'll be able to skip the error and release. You can also update the declaration to turn off advertising ID release errors.

When you answer this question, make sure to verify if any third-party SDK code in your app uses advertising ID. If so, you must declare that your app uses it. Some SDKs, such as the Google Mobile Ads SDK (Play Services-ads) may already declare the com.google.android.gms.permission.AD_ID permission in the SDK's library manifest. If your app uses these SDKs as dependencies, the com.google.android.gms.permission.AD_ID permission from the SDK's library manifest will be merged with your app's main manifest by default, even if you don't explicitly declare the permission in your app's main manifest. Learn more

I'm not using any advertising in my app but I've had confirmation from Expo that since I'm using the expo-analytics-segment I have to answer this question with "Yes". See here.

What I don't know is what answering "Yes" entails.

Mainly:

I'm really hesitant to release the next version before clearing this up as the warning in the Play console suggests the release would be blocked if this is not handled correctly.

I'm currently on Expo 44.


Solution

  • It seems I was confusing the Advertising ID with the permission to use the Advertising ID.

    As explained here:

    The advertising ID is a unique, user-resettable ID for advertising, provided by Google Play services

    So the advertising ID is not something that a developer sets. However, for Android 13 and higher we need to include a permission to use the advertising ID (if we want to use it).

    I've received confirmation from the Expo team that I need to provide the com.google.android.gms.permission.AD_ID permission that's mentioned in the Google Play Console warning in the original post.

    That can be done in 2 ways:

    {
      ...
      "expo": {
        "android": {
          "permissions": ["com.google.android.gms.permission.AD_ID"],
        },
        ...
      }
    }
    

    I'm opting for option 2.

    See this thread on the Expo forums for a discussion about this.