Demander le consentement des utilisateurs européens

Conformément aux Règles de Google relatives au consentement de l'utilisateur dans l'UE, vous devez informer vos utilisateurs de l'Espace économique européen (EEE) et obtenir leur consentement pour utiliser des cookies ou un autre stockage local, lorsque la législation l'impose, et pour utiliser vos données personnelles (telles que les AdID) afin de 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 de consentement. Le SDK Consent est une bibliothèque Open Source qui fournit des fonctions utilitaires permettant de recueillir le consentement des 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, ce qui nécessite d'obtenir 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. Google accepte également la configuration des demandes d'annonces pour la diffusion d'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 vers le SDK Google Mobile Ads une fois que vous avez obtenu le consentement.

Prerequisites

Les applications peuvent importer le SDK de consentement 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 fichier build.gradle au niveau du projet (extrait)

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

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

Ouvrez ensuite le fichier build.gradle au niveau de votre application, puis recherchez une section "&dependencies".

Exemple de fichier 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, qui indique à Gradle d'extraire la dernière version du SDK de consentement. Une fois que c'est fait, enregistrez le fichier et effectuez une synchronisation Gradle.

Avant d'utiliser les autres méthodes disponibles dans le SDK Consent, 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 le dernier consentement de l'utilisateur, l'état du consentement est défini sur un état inconnu.

Si vous n'utilisez pas la médiation

Si vous n'utilisez pas la médiation, deux options s'offrent à vous pour intégrer le SDK Consent afin de recueillir le consentement des utilisateurs.

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'interface utilisateur. AdMobLe 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 auprès de 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 de consentement.

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

Lors de la collecte du consentement, si un utilisateur a accepté de ne recevoir que des annonces non personnalisées, vous devrez transférer le consentement vers le 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 auprès de AdMob, comme expliqué dans la section Collecte du consentement géré par l'éditeur. Vous devez déterminer quels fournisseurs de technologie publicitaire supplémentaires auprès d'autres réseaux publicitaires doivent être présentés aux utilisateurs afin qu'ils donnent 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 devez également stocker manuellement les réponses liées au consentement de l'utilisateur et transférer ce consentement vers le SDK Google Mobile Ads si l'utilisateur a autorisé à ne recevoir que des annonces non personnalisées.

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

Modifier l'état de consentement

Lorsque vous utilisez le SDK Consent, nous vous recommandons de déterminer l'état de consentement d'un utilisateur à chaque lancement d'application. Pour cela, 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. Trouvez votre référence éditeur.

  • Instance de ConsentInfoUpdateListener.

Si les informations de consentement sont correctement mises à jour, l'état du consentement mis à jour est fourni via la méthode onConsentInfoUpdated() de ConsentInfoUpdateListener. Les valeurs suivantes peuvent être attribuées à ConsentStatus:

État d'autorisation Définition
ConsentStatus.PERSONALIZED L'utilisateur a donné son accord pour les annonces personnalisées.
ConsentStatus.NON_PERSONALIZED L'utilisateur a donné son consentement pour 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 la zone géographique de la requête est inconnue.

Si la méthode isRequestLocationInEeaOrUnknown() renvoie false, l'utilisateur ne se trouve pas dans l'Espace économique européen et le consentement n'est pas requis conformément aux 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:

Google et SDK SDK de consentement. propose deux méthodes pour recueillir le consentement d'un utilisateur:

N'oubliez pas d'offrir aux utilisateurs la possibilité de modifier ou révoquer le consentement.

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

  • Consentement pour les annonces personnalisées
  • Autoriser l'affichage des annonces non personnalisées
  • Utiliser une version payante de l'application au lieu de voir des annonces

Nous vous recommandons de lire attentivement le texte de consentement. Ce qui s'affiche par défaut est un message qui peut être utile si vous utilisez Google pour monétiser votre application. Toutefois, nous ne pouvons pas vous fournir de conseils juridiques sur le texte de consentement qui vous convient. Pour mettre à jour le texte du consentement dans le 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 une 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 avec les options suivantes:

withListener()
Enregistre un écouteur pour ConsentForm. Chacune des méthodes pouvant être remplacées dans ConsentFormListener correspond à un événement du cycle de vie du formulaire de consentement.
Méthodes pouvant être remplacées
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.
  • La valeur de l'élément userPrefersAdFree est true lorsque l'utilisateur a choisi d'utiliser une version payante de l'application au lieu de voir des annonces.
withPersonalizedAdsOption()
Indique que le formulaire de consentement 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 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 avec 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 l'option choisie par l'utilisateur et déclenche l'événement onConsentFormClosed. Vous pouvez écouter cet événement et transférer le consentement vers le SDK Google Mobile Ads.

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

Si vous choisissez de recueillir 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 références éditeur utilisées dans votre application. Notez que le consentement est requis pour la liste complète des fournisseurs de technologie publicitaire configurés pour vos références é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 des 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 généré le consentement pour le SDK Consent, vous pouvez le transférer vers le SDK Google Mobile Ads.

Pour permettre aux utilisateurs de modifier leur consentement, il vous suffit de répéter les étapes décrites dans la section Collecter le 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 le tag TFUA (Tag Pour les utilisateurs n'ayant pas atteint l'âge minimal requis en Europe). Pour inclure cette balise dans toutes les demandes d'annonces effectuées à partir de votre application,appelez setTagForUnderAgeOfConsent(true). Ce paramètre est appliqué à toutes les futures demandes d'annonces.

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

Une fois le paramètre TFUA activé, le formulaire de consentement affiché par Google échouera. Toutes les demandes d'annonces incluant TFUA ne seront plus éligibles pour la publicité personnalisée et le remarketing. TFUA désactive les demandes adressées aux 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 se comporte différemment selon la valeur de ConsentInformation.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 Consent est compatible avec les options de débogage que vous pouvez définir avant d'appeler d'autres méthodes dans ce SDK.

  1. Suivez les instructions de la section État du consentement pour la mise à jour pour appeler requestConsentInfoUpdate. Exécutez ensuite votre application. Vérifiez le résultat de la commande logcat pour la commande suivante:

    I/ConsentInformation: Use
    ConsentInformation.getInstance(context).addTestDevice("33BE2250B43518CCDA7DE426D04EE231")
    to get test ads on this device.
  2. Désignez votre appareil en tant qu'appareil de test à l'aide de 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 effectuées, les appels de mise à jour de l'état de consentement tiennent compte de votre zone géographique de débogage.

Le code de cette section peut être utilisé avec n'importe quelle version du SDK Google Mobile Ads. Il peut également être utilisé que vous ayez ou non utilisé le SDK de consentement pour recueillir le consentement.

Le comportement par défaut du SDK Google Mobile Ads consiste à diffuser des annonces personnalisées. Si un utilisateur a consenti à ne recevoir que des publicités non personnalisées, vous pouvez configurer un objet AdRequest pour spécifier que seules les publicités 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 :

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

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

Si des annonces non personnalisées sont demandées, l'URL de demande d'annonce inclut actuellement &npa=1 . Toutefois, notez qu'il s'agit d'un détail de mise en œuvre interne du SDK Google Mobile Ads et qu'il est susceptible d'être modifié.

Différer la mesure des applications (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 dès le démarrage de l'application. Ce comportement d'initialisation vous permet d'activer les métriques utilisateur AdMob sans modifier le code supplémentaire.

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

Pour retarder les mesures de 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 sont compatibles avec le SDK de consentement ?
Le SDK Consent 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 changements seront appliqués aux ad servers de Google dans un délai d'environ une heure.