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'un de ces identifiants est l'identifiant publicitaire, qui identifie de manière unique un utilisateur particulier pour des cas d'utilisation publicitaires, tels que la personnalisation des annonces.
Pour mettre en place une solution standardisée de suivi des annonces sur les appareils exécutant votre application, vous pouvez utiliser la bibliothèque d'identifiants publicitaires. 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 un intent standard pour ouvrir un écran de paramètres implémenté par le fournisseur d'annonces. 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 d'identifiants publicitaires pour obtenir un identifiant publicitaire cohérent par utilisateur et par appareil. Ce guide présente ensuite 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 128 bits équivalent:
38400000-8cf0-11bd-b23e-10b96e40000d
La bibliothèque d'identifiants publicitaires normalise la valeur renvoyée si nécessaire pour fournir des identifiants à l'aide de ce format.
Pour récupérer l'identifiant publicitaire réinitialisable par l'utilisateur de votre application, procédez comme suit:
Pour vérifier si un fournisseur d'annonces est disponible, appelez
AdvertisingIdClient.isAdvertisingIdProviderAvailable()
. Si cette méthode renvoiefalse
, votre application doit utiliser un autre moyen pour effectuer les cas d'utilisation requis du suivi des annonces.Obtenez les détails de l'identifiant de l'annonce, y compris l'identifiant publicitaire, en appelant
AdvertisingIdClient.getAdvertisingIdInfo()
. La bibliothèque d'identifiants publicitaires exécute cette méthode sur un thread de nœud de calcul et utilise un délai d'expiration de la connexion de 10 secondes.
L'extrait de code suivant montre comment récupérer l'identifiant publicitaire ainsi que d'autres informations auprès du fournisseur d'annonces:
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") }
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'identifiants publicitaires
La figure 1 illustre la structure de la bibliothèque d'identifiants publicitaires. La bibliothèque se compose des modules suivants:
- Un module client, qui est une couche fine incluse dans les applications.
- Un module du fournisseur, mis à disposition par le fabricant de l'appareil Les implémentations de ce module doivent définir une UI de paramètres permettant aux utilisateurs de réinitialiser leur identifiant publicitaire et d'activer/de désactiver les préférences de suivi des annonces.
Le module client communique avec le module du fournisseur pour récupérer les identifiants publicitaires et les préférences des utilisateurs concernant le suivi des annonces.
Gestion de plusieurs fournisseurs dans la bibliothèque
Un appareil peut être compatible simultanément avec plusieurs fournisseurs d'annonces au niveau du système. Si la bibliothèque d'identifiants publicitaires détecte cette situation, elle garantit que votre application récupère toujours les informations auprès du même fournisseur, en supposant que celui-ci reste disponible. Ce processus garantit la cohérence de l'identifiant publicitaire.
Si l'ensemble de fournisseurs d'annonces disponibles change au fil du temps et que votre application interagit avec un autre fournisseur d'identifiants d'annonces, toutes les autres applications clientes commencent également à utiliser ce nouveau fournisseur. Votre application présente le même comportement que celui qui se produirait si l'utilisateur avait demandé la réinitialisation de son identifiant publicitaire.
La bibliothèque des fournisseurs d'identifiants publicitaires utilise l'ordre déterministe suivant pour classer les fournisseurs:
- Fournisseurs ayant demandé l'autorisation
androidx.ads.identifier.provider.HIGH_PRIORITY
- Fournisseurs installés sur l'appareil depuis le plus longtemps.
- Fournisseurs qui apparaissent en premier dans l'ordre alphabétique.