Demander le consentement des utilisateurs européens

Restez organisé à l'aide des collections Enregistrez et classez les contenus selon vos préférences.

Conformément aux Règles de Google relatives au consentement de l'utilisateur dans l'UE, vous devez divulguer certaines informations à vos utilisateurs dans l'Espace économique européen (EEE) et leur demander d'utiliser des cookies ou tout autre type de stockage local, lorsque la législation l'impose, et d'utiliser des données à caractère personnel (comme les AdID) pour diffuser des annonces. Ces règles reflètent les exigences de la directive vie privée et communications électroniques de l'UE, et celles du Règlement général sur la protection des données (RGPD).

Afin d'aider les éditeurs à satisfaire aux obligations qui leur sont imposées par ce règlement, Google propose un SDK Consent. Le SDK Consent est une bibliothèque Open Source qui fournit des fonctions utilitaires pour recueillir le consentement de vos utilisateurs. Le code source complet est disponible surGitHub.

Les annonces diffusées par Google peuvent être classées comme personnalisées ou non personnalisées, et requièrent toutes deux le consentement des utilisateurs de l'EEE. Par défaut, les demandes d'annonces envoyées à Google diffusent des annonces personnalisées, sélectionnées en fonction des données précédemment collectées par l'utilisateur. Vous pouvez également configurer des demandes d'annonces pour diffuser des annonces non personnalisées. En savoir plus sur les annonces personnalisées et non personnalisées

Ce guide explique comment utiliser le SDK Consent pour obtenir le consentement des utilisateurs. Elle explique également comment transférer le consentement au SDK Google Mobile Ads une fois le consentement obtenu.

Conditions préalables

Les applications peuvent importer le SDK Consent avec une dépendance Gradle qui pointe vers le dépôt Maven de Google. Pour utiliser ce dépôt, vous devez le référencer dans le fichier build.gradle au niveau du projet de l'application. Ouvrez la vôtre et recherchez une section allprojects:

Exemple de build.gradle au niveau du projet (extrait)

allprojects {
    repositories {
        google()
        jcenter()
    }
}

Ajoutez la directive google() ci-dessus si elle n'est pas déjà présente.

Ensuite, ouvrez le fichier build.gradle au niveau de votre application et recherchez une section "dependencies".

Exemple de build.gradle au niveau de l'application (extrait)

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'androidx.appcompat:appcompat:1.2.0'
    implementation 'com.google.android.ads.consent:consent-library:1.0.6'
}

Ajoutez la ligne en gras ci-dessus pour indiquer à Gradle d'intégrer la dernière version du SDK. Une fois que c'est fait, enregistrez le fichier et effectuez une synchronisation Gradle.

Avant d'utiliser toute autre méthode du SDK de consentement, vous devez mettre à jour l'état de consentement pour vous assurer que le SDK de consentement dispose des informations les plus récentes sur les fournisseurs de technologie publicitaire que vous avez sélectionnés dans l'AdMob UI. Si la liste de fournisseurs de technologie publicitaire a changé depuis que l'utilisateur a accordé son dernier consentement, l'état du consentement est redéfini sur un état inconnu.

Si vous n'utilisez pas la médiation

Si vous n'utilisez pas la médiation, vous disposez de deux options pour implémenter le SDK Consent afin de recueillir le consentement.

Vous pouvez utiliser le SDK Consent pour présenter un formulaire de consentement affiché par Google à vos utilisateurs. Le formulaire de consentement affiche la liste des fournisseurs de technologie publicitaire que vous avez sélectionnés dans l'UI AdMob. Le SDK Consent stocke la réponse de l'utilisateur.

L'autre option consiste à utiliser le SDK Consent pour récupérer de manière dynamique la liste complète des fournisseurs de technologie publicitaire disponibles sur AdMob, comme expliqué dans la collecte du consentement géré par l'éditeur. Toutefois, dans ce cas, vous devrez déterminer comment la liste des fournisseurs doit être mise à la disposition de vos utilisateurs et leur présenter votre propre formulaire d'autorisation.

Une fois que l'utilisateur a fait son choix, vous pouvez demander au SDK Consent de stocker ce choix, comme expliqué dans Stocker le consentement géré par l'éditeur.

Lors de la collecte du consentement, si un utilisateur a accepté de ne voir que des annonces non personnalisées, vous devez transférer le consentement au SDK Google Mobile Ads.

Si vous utilisez AdMob la médiation

Vous pouvez utiliser le SDK Consent pour récupérer de manière dynamique la liste complète des fournisseurs de technologie publicitaire disponibles sur AdMob, comme expliqué dans la collecte du consentement géré par l'éditeur. Vous devez déterminer quels autres fournisseurs de technologie publicitaire d'autres réseaux publicitaires doivent être présentés à vos utilisateurs pour obtenir leur consentement.

En tant que développeur d'applications, vous devez recueillir le consentement des utilisateurs pour les fournisseurs de technologie publicitaire renvoyés par le SDK Consent et pour les fournisseurs d'autres réseaux publicitaires. Vous devrez également stocker manuellement les réponses de consentement des utilisateurs et transférer le consentement au SDK Google Mobile Ads si l'utilisateur a accepté de ne recevoir que des annonces non personnalisées.

Pour le moment, Google ne peut pas obtenir ni gérer le consentement des utilisateurs pour les réseaux de médiation. Vous devez donc obtenir le consentement de chaque réseau publicitaire et le gérer séparément. Veuillez consulter le guide d'intégration de chaque partenaire de médiation pour en savoir plus.

Modifier l'état de consentement

Lorsque vous utilisez le SDK de consentement, nous vous recommandons de déterminer l'état du consentement d'un utilisateur à chaque lancement d'application. Pour ce faire, appelez requestConsentInfoUpdate() sur une instance de ConsentInformation.

import com.google.ads.consent.*;

public class MainActivity extends Activity {
    ...

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        ...
        ConsentInformation consentInformation = ConsentInformation.getInstance(context);
        String[] publisherIds = {"pub-0123456789012345"};
        consentInformation.requestConsentInfoUpdate(publisherIds, new ConsentInfoUpdateListener() {
            @Override
            public void onConsentInfoUpdated(ConsentStatus consentStatus) {
                 // User's consent status successfully updated.
            }

            @Override
            public void onFailedToUpdateConsentInfo(String errorDescription) {
                 // User's consent status failed to update.
            }
        });
        ...
    }
    ...
}

L'appel de requestConsentInfoUpdate() nécessite deux arguments:

  • Tableau de références éditeur valides et entièrement activées à partir desquelles votre application demande des annonces. Recherchez votre référence éditeur.

  • Instance de ConsentInfoUpdateListener.

Si les informations de consentement sont correctement mises à jour, l'état de consentement mis à jour est fourni via la méthode onConsentInfoUpdated() de ConsentInfoUpdateListener. Les valeurs ConsentStatus répertoriées ci-dessous peuvent avoir les valeurs suivantes:

État du consentement Définition
ConsentStatus.PERSONALIZED L'utilisateur a autorisé les annonces personnalisées.
ConsentStatus.NON_PERSONALIZED L'utilisateur a autorisé les annonces non personnalisées.
ConsentStatus.UNKNOWN L'utilisateur n'a ni accordé, ni refusé le consentement pour les annonces personnalisées ou non.

Une fois les informations sur le consentement mises à jour, vous pouvez également consulter ConsentInformation.getInstance(context).isRequestLocationInEeaOrUnknown() pour voir si l'utilisateur se trouve dans l'Espace économique européen ou si l'emplacement de la requête est inconnu.

Si la méthode isRequestLocationInEeaOrUnknown() renvoie false, l'utilisateur n'est pas situé dans l'Espace économique européen et le consentement n'est pas requis en vertu des Règles relatives au consentement de l'utilisateur dans l'UE. Vous pouvez envoyer des demandes d'annonces au SDK Google Mobile Ads.

Si la méthode isRequestLocationInEeaOrUnknown() renvoie true :

  • Si le ConsentStatus renvoyé est PERSONALIZED ou NON_PERSONALIZED, l'utilisateur a déjà donné son consentement. Vous pouvez maintenant transférer le consentement au SDK Google Mobile Ads.

  • Si la valeur ConsentStatus renvoyée est UNKNOWN, consultez la section Collecte du consentement ci-dessous, qui décrit l'utilisation de méthodes utilitaires pour recueillir le consentement.

SDK de consentement de Google. propose deux façons d'obtenir le consentement d'un utilisateur:

N'oubliez pas de donner aux utilisateurs la possibilité de modifier ou révoquer leur consentement.

Le formulaire de consentement affiché par Google est configurable en plein écran sur le contenu de votre application. Vous pouvez configurer le formulaire pour présenter à l'utilisateur les combinaisons des options suivantes:

  • Autorisation de voir des annonces personnalisées
  • Autorisation de voir des annonces non personnalisées
  • Utiliser une version payante de l'application plutôt que de regarder des annonces

Vous devez lire attentivement le texte de consentement: ce qui s'affiche par défaut est un message qui peut être approprié si vous utilisez Google pour monétiser votre application. Toutefois, nous ne pouvons pas vous fournir de conseils juridiques concernant le texte de consentement qui vous convient. Pour mettre à jour le texte de consentement du formulaire de consentement affiché par Google, modifiez le fichier consentform.html inclus dans le SDK Consent si nécessaire.

Le formulaire de consentement affiché par Google est configuré et affiché à l'aide de la classe ConsentForm. Le code suivant montre comment créer un ConsentForm avec les trois options de consentement:

URL privacyUrl = null;
try {
    // TODO: Replace with your app's privacy policy URL.
    privacyUrl = new URL("https://www.your.com/privacyurl");
} catch (MalformedURLException e) {
    e.printStackTrace();
    // Handle error.
}
ConsentForm form = new ConsentForm.Builder(context, privacyUrl)
    .withListener(new ConsentFormListener() {
        @Override
        public void onConsentFormLoaded() {
            // Consent form loaded successfully.
        }

        @Override
        public void onConsentFormOpened() {
            // Consent form was displayed.
        }

        @Override
        public void onConsentFormClosed(
                ConsentStatus consentStatus, Boolean userPrefersAdFree) {
            // Consent form was closed.
        }

        @Override
        public void onConsentFormError(String errorDescription) {
            // Consent form error.
        }
    })
    .withPersonalizedAdsOption()
    .withNonPersonalizedAdsOption()
    .withAdFreeOption()
    .build();

Les méthodes ci-dessus préparent le formulaire de consentement affiché par Google à l'aide des options suivantes:

withListener()
Enregistre un écouteur pour ConsentForm. Chacune des méthodes remplaçables dans ConsentFormListener correspond à un événement du cycle de vie du formulaire d'autorisation.
Méthodes remplaçables
onConsentFormLoaded Le formulaire de consentement a bien été chargé.
onConsentFormError Échec du chargement du formulaire d'autorisation. Le paramètre errorDescription fournit une description de l'erreur.
onConsentFormOpened Le formulaire de consentement a été ouvert.
onConsentFormClosed Le formulaire de consentement a été clôturé. Les paramètres de la méthode fournissent les informations suivantes :
  • consentStatus est une valeur ConsentStatus qui décrit l'état de consentement mis à jour de l'utilisateur.
  • userPrefersAdFree a la valeur true lorsque l'utilisateur a choisi d'utiliser une version payante de l'application au lieu de voir les annonces.
withPersonalizedAdsOption()
Indique que le formulaire d'autorisation doit afficher une option d'annonce personnalisée.
withNonPersonalizedAdsOption()
Indique que le formulaire de consentement doit afficher une annonce non personnalisée.
withAdFreeOption()
Indique que le formulaire de consentement doit afficher une option d'application sans publicité.

Une fois que vous avez créé un objet ConsentForm, chargez le formulaire d'autorisation en appelant la méthode load() de ConsentForm, comme indiqué ci-dessous:

form.load();

Pour présenter à l'utilisateur le formulaire de consentement affiché par Google, appelez show() sur une instance de ConsentForm, comme illustré ci-dessous:

form.show();

Une fois que l'utilisateur a sélectionné une option et fermé le formulaire, le SDK Consent enregistre le choix de l'utilisateur et déclenche l'événement onConsentFormClosed. Vous pouvez écouter cet événement et transférer le consentement au SDK Google Mobile Ads.

Collecte du consentement géré par l'éditeur

Si vous choisissez de collecter vous-même le consentement, vous pouvez utiliser la méthode getAdProviders() de la classe ConsentInformation pour obtenir les fournisseurs de technologie publicitaire associés aux ID d'éditeur utilisés dans votre application. Notez que le consentement est requis pour la liste complète des fournisseurs de technologie publicitaire configurés pour vos ID d'éditeur.

Avant de pouvoir appeler getAdProviders(), vous devez attendre la méthode onConsentInfoUpdate() de ConsentInfoUpdateListener, comme décrit dans la section Mettre à jour l'état de consentement.

List<AdProvider> adProviders =
    ConsentInformation.getInstance(context).getAdProviders();

Vous pouvez ensuite utiliser la liste de fournisseurs de technologie publicitaire pour obtenir vous-même le consentement.

Une fois l'autorisation obtenue, enregistrez le ConsentStatus correspondant à la réponse de l'utilisateur à l'aide de la méthode setConsentStatus() de la classe ConsentInformation.

ConsentInformation.getInstance(context)
    .setConsentStatus(ConsentStatus.PERSONALIZED);

Après avoir signalé le consentement au SDK de consentement, vous pouvez transférer le consentement au SDK Google Mobile Ads.

Pour permettre aux utilisateurs de mettre à jour leur consentement, il vous suffit de répéter les étapes décrites dans la section Collecte du consentement lorsque l'utilisateur choisit de mettre à jour son état de consentement.

Si un éditeur sait que l'utilisateur n'a pas atteint l'âge minimal requis, toutes les demandes d'annonces doivent définir un tag TFUA (Tag For Users in the Age of Consent in Europe). Pour inclure ce tag dans toutes les demandes d'annonces effectuées depuis votre application,appelez setTagForUnderAgeOfConsent(true). Ce paramètre s'applique à toutes les demandes d'annonces futures.

ConsentInformation.getInstance(context).setTagForUnderAgeOfConsent(true);

Une fois le paramètre TFUA activé, le formulaire de consentement affiché par Google ne se chargera pas. Toutes les demandes d'annonces qui comprennent TFUA ne seront plus éligibles à la publicité et au remarketing personnalisés. TFUA désactive les demandes adressées à des fournisseurs de technologie publicitaire tiers, tels que les pixels de mesure des performances des annonces et les ad servers tiers.

Pour supprimer TFUA des demandes d'annonces,appelez setTagForUnderAgeOfConsent(false).

Tests

Le SDK Consent adopte différents comportements en fonction de la valeur deConsentInformation.getInstance(context).isRequestLocationInEeaOrUnknown(). Par exemple, le formulaire de consentement ne se charge pas si l'utilisateur ne se trouve pas dans l'EEE.

Pour faciliter le test de votre application dans l'EEE et en dehors, le SDK de consentement est compatible avec les options de débogage que vous pouvez définir avant d'appeler toute autre méthode dans le SDK.

  1. Suivez les instructions de la section Modifier l'état de consentement pour appeler requestConsentInfoUpdate. Exécutez ensuite votre application. Consultez la sortie logcat pour le journal suivant:

    I/ConsentInformation: Use
    ConsentInformation.getInstance(context).addTestDevice("33BE2250B43518CCDA7DE426D04EE231")
    to get test ads on this device.
  2. Désignez votre appareil comme appareil de test en utilisant l'identifiant publicitaire de logcat:

    ConsentInformation.getInstance(context).addTestDevice("33BE2250B43518CCDA7DE426D04EE231");
  3. Enfin, appelez setDebugGeography pour définir votre zone géographique préférée à des fins de test.

    // Geography appears as in EEA for test devices.
    ConsentInformation.getInstance(context).
        setDebugGeography(DebugGeography.DEBUG_GEOGRAPHY_EEA);
    // Geography appears as not in EEA for debug devices.
    ConsentInformation.getInstance(context).
        setDebugGeography(DebugGeography.DEBUG_GEOGRAPHY_NOT_EEA);

Une fois ces étapes terminées, les appels de mise à jour de l'état de consentement prennent en compte votre zone de débogage.

Le code de cette section peut être utilisé avec n'importe quelle version du SDK Google Mobile Ads. Vous pouvez également l'utiliser, que vous ayez utilisé le SDK Consent pour recueillir le consentement.

Par défaut, le SDK Google Mobile Ads diffuse des annonces personnalisées. Si un utilisateur a accepté de ne recevoir que des annonces non personnalisées, vous pouvez configurer un objet AdRequest pour spécifier que seules les annonces non personnalisées doivent être demandées. Le code suivant entraîne la demande d'annonces non personnalisées, que l'utilisateur se trouve ou non dans l'EEE:

Java

Bundle extras = new Bundle();
extras.putString("npa", "1");

AdRequest request = new AdRequest.Builder()
    .addNetworkExtrasBundle(AdMobAdapter.class, extras)
    .build();

Kotlin

val extras = Bundle()
extras.putString("npa", "1")

val request = AdRequest.Builder()
    .addNetworkExtrasBundle(AdMobAdapter::class.java, extras)
    .build()

Si des annonces non personnalisées sont demandées, l'URL de demande d'annonce inclut actuellement &npa=1. Notez toutefois que les détails de la mise en œuvre interne du SDK Google Mobile Ads sont susceptibles de changer.

Retarder la mesure dans l'application (facultatif)

Par défaut, le SDK Google Mobile Ads initialise la mesure des applications et commence à envoyer des données d'événements au niveau de l'utilisateur à Google au démarrage de l'application. Ce comportement d'initialisation vous permet d'activer les métriques utilisateur AdMob sans modifier le code.

Toutefois, si votre application nécessite le consentement de l'utilisateur avant l'envoi de ces événements, vous pouvez retarder la mesure jusqu'à ce que vous initialisiez le SDK Mobile Ads ou chargeiez une annonce.

Pour retarder les mesures dans l'application, ajoutez la balise <meta-data> suivante à votre AndroidManifest.xml.

<manifest>
     <application>
        <!-- Delay app measurement until MobileAds.initialize() is called. -->
        <meta-data
            android:name="com.google.android.gms.ads.DELAY_APP_MEASUREMENT_INIT"
            android:value="true"/>
    </application>
</manifest>

Questions fréquentes

Combien de fournisseurs de technologie publicitaire le SDK de consentement est-il compatible ?
Le SDK de consentement n'impose pas de limite au nombre de fournisseurs de technologie publicitaire qu'un éditeur choisit d'activer.
La liste des fournisseurs de technologie publicitaire renvoyée par le SDK est-elle automatiquement mise à jour si je modifie ma sélection dans l' AdMob UI ?
Oui. Si vous modifiez la liste des fournisseurs de technologie publicitaire dans l'AdMob interface utilisateur, les modifications seront appliquées aux ad servers de Google dans un délai d'environ une heure.