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 sur GitHub.

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

CocoaPods (recommandé)

Le moyen le plus simple d'importer le SDK dans un projet iOS consiste à utiliser CocoaPods. Ouvrez le fichier Podfile de votre projet et ajoutez la ligne suivante à la cible de votre application:

pod 'PersonalizedAdConsent'

Ensuite, exécutez la ligne de commande:

pod install --repo-update

Si vous débutez avec CocoaPods, consultez la documentation officielle pour en savoir plus sur la création et l'utilisation de Podfiles.

Téléchargement manuel

Vous pouvez également télécharger ou cloner la source du SDK directement, puis suivre les instructions suivantes pour l'inclure dans votre projet:

  1. À partir de votre Finder, faites glisser le fichier PersonalizedAdConsent.xcodeproj dans votre projet.

  2. Accédez à l'onglet Build Phases (Phases de compilation). Sous Dépendances cibles, cliquez sur le bouton +, puis ajoutez la cible PersonalizedAdConsent.

  3. Effectuez un clic droit sur votre projet, puis sélectionnez Add Files to "MyProject". Accédez à PersonalizedAdConsent.bundle. Assurez-vous de cocher Créer des références de dossier.

    Une fois cette opération terminée, PersonalizedAdConsent.bundle doit apparaître dans l'onglet Phases de compilation sous la section Copier les ressources du bundle.

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 ce faire, appelez requestConsentInfoUpdateForPublisherIdentifiers:completionHandler: sur une instance de PACConsentInformation.

Swift

import PersonalizedAdConsent
...
class ViewController: UIViewController {

  override func viewDidLoad() {
    super.viewDidLoad()
    PACConsentInformation.sharedInstance.
    requestConsentInfoUpdate(
    forPublisherIdentifiers: ["pub-0123456789012345"])
    {(_ error: Error?) -> Void in
      if let error = error {
        // Consent info update failed.
      } else {
        // Consent info update succeeded. The shared PACConsentInformation
        // instance has been updated.
      }
    }
  }

Objective-C

#import <PersonalizedAdConsent/PersonalizedAdConsent.h>
...
@implementation ViewController

- (void)viewDidLoad {
  [super viewDidLoad];

  [PACConsentInformation.sharedInstance
      requestConsentInfoUpdateForPublisherIdentifiers:@[ @"pub-0123456789012345" ]
          completionHandler:^(NSError *_Nullable error) {
            if (error) {
              // Consent info update failed.
            } else {
              // Consent info update succeeded. The shared PACConsentInformation
              // instance has been updated.
            }
          }];
}

L'appel de requestConsentInfoUpdateForPublisherIdentifiers:completionHandler: 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.

  • Un bloc qui accepte un NSError en tant que paramètre d'entrée, qui fournit des informations sur une requête de mise à jour du consentement ayant échoué.

Si les informations de consentement sont correctement mises à jour, PACConsentInformation.sharedInstance.consentStatus fournit l'état du consentement mis à jour. Les valeurs possibles sont les suivantes:

État du consentement Définition
PACConsentStatusPersonalized L'utilisateur a donné son accord pour les annonces personnalisées.
PACConsentStatusNonPersonalized L'utilisateur a donné son consentement pour les annonces non personnalisées.
PACConsentStatusUnknown 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 PACConsentInformation.sharedInstance.requestLocationInEEAOrUnknown 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 propriété requestLocationInEEAOrUnknown est définie sur NO, 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 propriété requestLocationInEEAOrUnknown est YES :

  • Si PACConsentStatus est défini sur PACConsentStatusPersonalized ou PACConsentStatusNonPersonalized, cela signifie que l'utilisateur a déjà donné son consentement. Vous pouvez désormais transférer le consentement vers le SDK Google Mobile Ads.

  • Si l'utilisateur dispose d'un consentement PACConsentStatusUnknown, consultez la section Collecte du consentement ci-dessous, qui décrit l'utilisation de méthodes utilitaires pour recueillir le consentement.

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 PACConsentForm. Le code suivant montre comment créer une propriété PACConsentForm avec les trois options de formulaire:

Swift

// TODO: Replace with your app's privacy policy url.
guard let privacyUrl = URL(string: "https://www.your.com/privacyurl"),
  let form = PACConsentForm(applicationPrivacyPolicyURL: privacyUrl) else {
    print("incorrect privacy URL.")
    return
}
form.shouldOfferPersonalizedAds = true
form.shouldOfferNonPersonalizedAds = true
form.shouldOfferAdFree = true

Objective-C

// TODO: Replace with your app's privacy policy url.
NSURL *privacyURL = [NSURL URLWithString:@"https://www.your.com/privacyurl"];
PACConsentForm *form = [[PACConsentForm alloc] initWithApplicationPrivacyPolicyURL:privacyURL];
form.shouldOfferPersonalizedAds = YES;
form.shouldOfferNonPersonalizedAds = YES;
form.shouldOfferAdFree = YES;

Les propriétés de PACConsentForm sont décrites plus en détail ci-dessous:

shouldOfferPersonalizedAds
Indique si le formulaire de consentement doit afficher une option d'annonce personnalisée. La valeur par défaut est YES.
shouldOfferNonPersonalizedAds
Indique si le formulaire de consentement doit afficher une option d'annonce non personnalisée. La valeur par défaut est YES.
shouldOfferAdFree
Indique si le formulaire de consentement doit afficher une application sans publicité. La valeur par défaut est NO.

Une fois que vous avez créé et configuré un objet PACConsentForm, chargez le formulaire d'autorisation en appelant la méthode loadWithCompletionHandler: de PACConsentForm, comme indiqué ci-dessous:

Swift

form.load {(_ error: Error?) -> Void in
  print("Load complete.")
  if let error = error {
    // Handle error.
    print("Error loading form: \(error.localizedDescription)")
  } else {
    // Load successful.
  }
}

Objective-C

[form loadWithCompletionHandler:^(NSError *_Nullable error) {
  NSLog(@"Load complete. Error: %@", error);
  if (error) {
    // Handle error.
  } else {
    // Load successful.
  }
}];

Pour présenter à l'utilisateur le formulaire d'autorisation affiché par Google, appelez presentFromViewController:dismissCompletion: sur un PACConsentForm chargé, comme illustré ci-dessous:

Swift

form.present(from: self) { (error, userPrefersAdFree) in
      if let error = error {
        // Handle error.
      } else if userPrefersAdFree {
        // User prefers to use a paid version of the app.
      } else {
        // Check the user's consent choice.
        let status =
             PACConsentInformation.sharedInstance.consentStatus
      }
    }

Objective-C

 [form presentFromViewController:self
     dismissCompletion:^(NSError *_Nullable error, BOOL userPrefersAdFree) {
       if (error) {
         // Handle error.
       } else if (userPrefersAdFree) {
         // The user prefers to use a paid version of the app.
       } else {
         // Check the user's consent choice.
         PACConsentStatus status =
             PACConsentInformation.sharedInstance.consentStatus;
       }
     }];

L'appel de presentFromViewController:dismissCompletion: nécessite deux arguments:

  • UIViewController à partir duquel effectuer la présentation.

  • Un bloc qui accepte un NSError et un BOOL en tant que paramètres d'entrée Le NSError fournit des informations si une erreur s'est produite lors de l'affichage du formulaire de consentement. La valeur du champ userPrefersAdFree de l'BOOL a la valeur YES lorsque l'utilisateur a choisi d'utiliser une version payante de l'application au lieu de voir les annonces.

Une fois que l'utilisateur a sélectionné une option et fermé le formulaire, le SDK Consent enregistre le choix de l'utilisateur et appelle le bloc dismissCompletion:. Vous pouvez lire le choix de l'utilisateur et transférer le consentement vers le SDK Google Mobile Ads.

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

Si vous choisissez d'obtenir vous-même le consentement, vous pouvez utiliser la propriété adProviders de la classe PACConsentInformation 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 d'accéder à la propriété adProviders de PACConsentInformation, vous devez attendre que la mise à jour de l'état de consentement de l'utilisateur soit réussie, comme indiqué dans la section Mettre à jour l'état de consentement.

Swift

let adProviders = PACConsentInformation.sharedInstance.adProviders

Objective-C

NSArray *adProviders = PACConsentInformation.sharedInstance.adProviders;

Vous pouvez ensuite obtenir votre consentement à l'aide de la liste de fournisseurs d'annonces.

Une fois l'autorisation obtenue, enregistrez le PACConsentStatus correspondant à la réponse de l'utilisateur à l'aide de la propriété status de la classe PACConsentInformation.

Swift

PACConsentInformation.sharedInstance.consentStatus = .personalized

Objective-C

PACConsentInformation.sharedInstance.consentStatus = PACConsentStatusPersonalized;

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, Définissez la propriété tagForUnderAgeOfConsent sur YES. Ce paramètre est appliqué à toutes les futures demandes d'annonces.

Swift

PACConsentInformation.sharedInstance.isTaggedForUnderAgeOfConsent = true

Objective-C

PACConsentInformation.sharedInstance.tagForUnderAgeOfConsent = YES;

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,définissez la propriété tagForUnderAgeOfConsent sur NO.

Tests

Le SDK Consent se comporte différemment selon la valeur de PACConsentInformation.sharedInstance.requestLocationInEEAOrUnknown 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. Récupérez l'identifiant publicitaire de votre appareil. Vous pouvez utiliser le code suivant pour enregistrer votre identifiant publicitaire:

    #import <AdSupport/AdSupport.h>
    // ...
    
    NSLog(@"Advertising ID: %@",
          ASIdentifierManager.sharedManager.advertisingIdentifier.UUIDString);

    Consultez ensuite la console pour obtenir:

    Advertising ID: 41E538F6-9C98-4EF2-B3EE-D7BD8CAF8339
  2. Désignez votre appareil en tant qu'appareil de test à l'aide de l'identifiant publicitaire de la console:

    PACConsentInformation.sharedInstance.debugIdentifiers =
        @[ @"41E538F6-9C98-4EF2-B3EE-D7BD8CAF8339" ];
  3. Enfin, définissez debugGeography en fonction de votre zone géographique préférée à des fins de test.

    // Geography appears as in EEA for debug devices.
    PACConsentInformation.sharedInstance.debugGeography = PACDebugGeographyEEA;
    // Geography appears as not in EEA for debug devices.
    PACConsentInformation.sharedInstance.debugGeography = PACDebugGeographyNotEEA;

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 GADRequest 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 :

Rapide

let request = GADRequest()
let extras = GADExtras()
extras.additionalParameters = ["npa": "1"]
request.register(extras)

Objectif c

GADRequest *request = [GADRequest request];
GADExtras *extras = [[GADExtras alloc] init];
extras.additionalParameters = @{@"npa": @"1"};
[request registerAdNetworkExtras:extras];

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 clé GADDelayAppMeasurementInitavec la valeur booléenne YES au Info.plist de votre application. Vous pouvez effectuer cette modification par programmation:

<key>GADDelayAppMeasurementInit</key>
<true/>

Vous pouvez également la modifier dans l'éditeur de liste de propriétés:

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.