Obtenir un identifiant publicitaire réinitialisable par l'utilisateur Fait partie d'Android Jetpack.

Pour protéger la confidentialité des utilisateurs, il est recommandé que toutes les applications Android fonctionnent avec des identifiants réinitialisables par l'utilisateur. L'identifiant publicitaire est l'un de ces identifiants. Il permet d'identifier de manière unique un utilisateur spécifique pour des cas d'utilisation publicitaires, comme la personnalisation des annonces.

Pour prendre en charge une solution de suivi des annonces standardisée sur les appareils qui exécutent votre application, vous pouvez utiliser la bibliothèque Advertising ID. Cette bibliothèque, disponible sur les appareils équipés d'Android 4.0 (niveau d'API 14) ou version ultérieure, définit une interface permettant d'interagir avec les fournisseurs d'annonces au niveau du système. Cette interface permet à votre application de recevoir des valeurs d'identifiant publicitaire cohérentes.

Le fournisseur d'annonces inclus dans la bibliothèque d'identifiants publicitaires définit également une intention standard pour ouvrir un écran de paramètres que le fournisseur d'annonces implémente. Cet écran de paramètres permet à l'utilisateur de réinitialiser son identifiant publicitaire et de désactiver la personnalisation des annonces.

Ce guide explique comment utiliser le module client de la bibliothèque Advertising ID pour obtenir un identifiant publicitaire cohérent pour chaque utilisateur d'appareil. Ce guide présente ensuite une vue d'ensemble de l'architecture de la bibliothèque.

Configurer votre application cliente

En interagissant avec le module client de la bibliothèque d'identifiants publicitaires, votre application peut récupérer un identifiant publicitaire cohérent qui représente l'utilisateur qui interagit avec l'application.

L'identifiant publicitaire est représenté à l'aide de la version 3 du format d'identifiant unique universel (UUID) ou d'un format équivalent de 128 bits :

38400000-8cf0-11bd-b23e-10b96e40000d

La bibliothèque d'identifiants publicitaires normalise la valeur de retour si nécessaire pour fournir des ID dans ce format.

Pour récupérer l'identifiant publicitaire réinitialisable par l'utilisateur pour votre application, procédez comme suit :

  1. Vérifiez si un fournisseur d'annonces est disponible en appelant AdvertisingIdClient.isAdvertisingIdProviderAvailable(). Si cette méthode renvoie false, votre application doit utiliser un autre moyen pour effectuer les cas d'utilisation de suivi des annonces requis.

  2. Obtenez les détails de l'identifiant de l'annonce, y compris l'identifiant publicitaire, en appelant AdvertisingIdClient.getAdvertisingIdInfo(). La bibliothèque Advertising ID exécute cette méthode sur un thread de worker et utilise un délai de connexion de 10 secondes.

L'extrait de code suivant montre comment récupérer l'ID de publicité ainsi que d'autres informations auprès du fournisseur d'annonces :

app/build.gradle

Groovy

dependencies {
    implementation 'androidx.ads:ads-identifier:1.0.0-alpha01'

    // Used for the calls to addCallback() in the snippets on this page.
    implementation 'com.google.guava:guava:28.0-android'
}

Kotlin

dependencies {
    implementation("androidx.ads:ads-identifier:1.0.0-alpha01")

    // Used for the calls to addCallback() in the snippets on this page.
    implementation("com.google.guava:guava:28.0-android")
}

MyAdIdClient

Kotlin

// Used for the call to addCallback() within this snippet.
import com.google.common.util.concurrent.Futures.addCallback

private fun determineAdvertisingInfo() {
    if (AdvertisingIdClient.isAdvertisingIdProviderAvailable()) {
        val advertisingIdInfoListenableFuture =
                AdvertisingIdClient.getAdvertisingIdInfo(applicationContext)

        addCallback(advertisingIdInfoListenableFuture,
                object : FutureCallback<AdvertisingIdInfo> {
            override fun onSuccess(adInfo: AdvertisingIdInfo?) {
                val id: String = adInfo?.id
                val providerPackageName: String = adInfo?.providerPackageName
                val isLimitTrackingEnabled: Boolean =
                                adInfo?.isLimitTrackingEnabled
            }

            // Any exceptions thrown by getAdvertisingIdInfo()
            // cause this method to be called.
            override fun onFailure(t: Throwable) {
                Log.e("MY_APP_TAG",
                        "Failed to connect to Advertising ID provider.")
                // Try to connect to the Advertising ID provider again or fall
                // back to an ad solution that doesn't require using the
                // Advertising ID library.
            }
        }, Executors.newSingleThreadExecutor())
    } else {
        // The Advertising ID client library is unavailable. Use a different
        // library to perform any required ad use cases.
    }
}

Java

// Used for the call to addCallback() within this snippet.
import com.google.common.util.concurrent.Futures;

private void determineAdvertisingInfo() {
    if (AdvertisingIdClient.isAdvertisingIdProviderAvailable()) {
        ListenableFuture<AdvertisingIdInfo> advertisingIdInfoListenableFuture =
                AdvertisingIdClient.getAdvertisingIdInfo(getApplicationContext());
        Futures.addCallback(advertisingIdInfoListenableFuture,
                new FutureCallback<AdvertisingIdInfo>() {
                    @Override
                    public void onSuccess(AdvertisingIdInfo adInfo) {
                        String id = adInfo.getId();
                        String providerPackageName =
                                adInfo.getProviderPackageName();
                        boolean isLimitTrackingEnabled =
                                adInfo.isLimitTrackingEnabled();

                    // Any exceptions thrown by getAdvertisingIdInfo()
                    // cause this method to be called.
                    @Override
                    public void onFailure(Throwable throwable) {
                        Log.e("MY_APP_TAG",
                                "Failed to connect to Advertising ID provider.");
                        // Try to connect to the Advertising ID provider again
                        // or fall back to an ad solution that doesn't require
                        // using the Advertising ID library.
                    }
                });
    } else {
        // The Advertising ID client library is unavailable. Use a different
        // library to perform any required ad use cases.
    }
}

Architecture de la bibliothèque d'identifiant publicitaire

Architecture de la bibliothèque d&#39;identifiants publicitaires.
Figure 1. Architecture de la bibliothèque d'identifiants publicitaires

La figure 1 illustre la structure de la bibliothèque Advertising ID. La bibliothèque se compose des modules suivants :

  • Un module client, qui est une couche fine incluse dans les applications.
  • Un module de fournisseur mis à disposition par le fabricant de l'appareil. Les implémentations de ce module doivent définir une UI de paramètres pour permettre aux utilisateurs de réinitialiser leur identifiant publicitaire et d'activer/désactiver les préférences de suivi des annonces.

Le module client communique avec le module fournisseur pour récupérer les ID publicitaires et les préférences des utilisateurs concernant le suivi des annonces.

Gestion de plusieurs fournisseurs par la bibliothèque

Il est possible qu'un appareil prenne en charge plusieurs fournisseurs d'annonces au niveau du système en même temps. Si la bibliothèque d'identifiants publicitaires détecte cette situation, elle vérifie que votre application récupère toujours les informations auprès du même fournisseur, en supposant que le fournisseur reste disponible. Ce processus permet de conserver la cohérence de l'ID publicitaire.

Si l'ensemble des fournisseurs d'annonces disponibles change au fil du temps et que votre application interagit avec un autre fournisseur d'identifiants publicitaires, toutes les autres applications clientes commencent également à utiliser ce nouveau fournisseur. Votre application présente le même comportement que si l'utilisateur avait demandé à réinitialiser son identifiant publicitaire.

La bibliothèque de fournisseurs d'ID publicitaire utilise l'ordre déterministe suivant pour classer les fournisseurs :

  1. Fournisseurs ayant demandé l'autorisation androidx.ads.identifier.provider.HIGH_PRIORITY.
  2. Fournisseurs installés sur l'appareil depuis le plus longtemps.
  3. Les fournisseurs qui apparaissent en premier dans l'ordre alphabétique.