Obtenir le consentement avec la plate-forme de messagerie utilisateur

Prerequisites

Impact des exigences de l'IAB pour les messages de consentement pour l'UE

Présentation

Le SDK UMP fournit des outils permettant aux éditeurs de demander le consentement pour les annonces personnalisées et de gérer les exigences d'Apple en matière de transparence des applications (ATT). Les éditeurs peuvent utiliser le SDK UMP pour gérer l'une ou l'autre de ces requêtes, ou les deux, en ne présentant qu'un seul formulaire. En effet, toute la configuration est effectuée dans la section Confidentialité et messages d'AdMob.

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 du Royaume-Uni, et obtenir leur consentement pour l'utilisation des cookies ou de tout autre stockage local, lorsque la législation l'impose, et pour utiliser des données à caractère personnel (comme l'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).

Pour aider les éditeurs à satisfaire aux obligations qui leur sont imposées par ce règlement, Google propose le SDK User Messaging Platform (UMP), qui remplace l'ancien SDK Consent Open Source. Le SDK UMP a été mis à jour pour être compatible avec les dernières normes de l'IAB. Nous avons également simplifié le processus de configuration des formulaires de consentement et la liste des partenaires publicitaires. Toutes ces configurations peuvent désormais être facilement gérées dans lesmessages d'AdMob sur la confidentialité et les messages.

Ce guide vous explique comment installer le SDK, implémenter les solutions de l'IAB et activer les fonctionnalités de test.

Importer le SDK

CocoaPods (de préférence)

Le SDK UMP est inclus en tant que dépendance du pod du SDK Google Mobile Ads à partir de la version 7.64.0 du SDK Google Mobile Ads.

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

pod 'Google-Mobile-Ads-SDK'

Ensuite, exécutez la ligne de commande suivante:

pod install --repo-update

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

Téléchargement manuel

Télécharger le SDK

Ensuite, faites glisser le framework dans votre projet Xcode en veillant à sélectionner Copy items if needed (Copier les éléments si nécessaire).

Vous pouvez ensuite inclure le framework dans le fichier de votre choix à l'aide de la commande suivante:

Swift

import UserMessagingPlatform

Objective-C

#include <UserMessagingPlatform/UserMessagingPlatform.h>

Mettre à jour votre fichier Info.plist

Ajouter l'ID de l'application à Info.plist

Pour obtenir l'ID de votre application, suivez les instructions du centre d'aide.

Ajoutez l'ID de votre application à votre Info.plist:

<key>GADApplicationIdentifier</key>
<string>YOUR-APP-ID</string>

App Tracking Transparency

Si vous prévoyez d'utiliser le SDK UMP pour gérer les exigences d'Apple de suivi des applications App Transparency, assurez-vous d'avoir créé, configuré et publié votre message ATT à l'aide de la fonctionnalité Confidentialité et messages d'AdMob.

Pour que le SDK UMP affiche un message d'alerte personnalisé, mettez à jour votre Info.plist afin d'ajouter la clé NSUserTrackingUsageDescription avec une chaîne de message personnalisée décrivant votre utilisation.

<key>NSUserTrackingUsageDescription</key>
<string>This identifier will be used to deliver personalized ads to you.</string>

La description de l'utilisation s'affiche dans la boîte de dialogue ATT lorsque vous présentez le formulaire de consentement:

Vous devez ensuite associer le framework AppTrackingTransparency:

Lors des tests, n'oubliez pas que, conformément aux exigences d'Apple, la boîte de dialogue IDFA ATT n'apparaîtra qu'une seule fois, car requestTrackingAuthorization: est une requête ponctuelle. Pour afficher l'alerte une deuxième fois, vous devez désinstaller et réinstaller votre application sur votre appareil de test.

Utiliser le SDK

Le SDK est conçu pour être utilisé de manière linéaire. Pour utiliser le SDK, procédez comme suit:

  1. Demandez les dernières informations sur le consentement.
  2. Vérifiez si le consentement est requis.
  3. Vérifiez si un formulaire est disponible et, le cas échéant, chargez-en un.
  4. Présentez le formulaire.
  5. permettre aux utilisateurs de modifier leur consentement ;

Il est recommandé de demander la mise à jour des informations de consentement à chaque lancement de l'application. Cela déterminera si l'utilisateur doit donner son consentement.

Cette méthode ne doit être appelée qu'à partir du thread principal.

Swift

// Create a UMPRequestParameters object.
let parameters = UMPRequestParameters()
// Set tag for under age of consent. Here false means users are not under age.
parameters.tagForUnderAgeOfConsent = false

// Request an update to the consent information.
UMPConsentInformation.sharedInstance.requestConsentInfoUpdate(
    with: parameters,
    completionHandler: { error in
      if error != nil {
        // Handle the error.
      } else {
        // The consent information state was updated.
        // You are now ready to check if a form is
        // available.
      }
    })

Objective-C

// Create a UMPRequestParameters object.
UMPRequestParameters *parameters = [[UMPRequestParameters alloc] init];
// Set tag for under age of consent. Here NO means users are not under age.
parameters.tagForUnderAgeOfConsent = NO;

// Request an update to the consent information.
[UMPConsentInformation.sharedInstance
    requestConsentInfoUpdateWithParameters:parameters
                         completionHandler:^(NSError *_Nullable error) {
                           if (error) {
                             // Handle the error.
                           } else {
                             // The consent information state was updated.
                             // You are now ready to check if a form is
                             // available.
                           }
                         }];

Charger un formulaire (si disponible)

Il est recommandé de charger un formulaire chaque fois que l'utilisateur lance votre application, même si vous déterminez que le consentement n'est pas nécessaire, afin que le formulaire soit prêt à s'afficher au cas où l'utilisateur souhaite modifier son paramètre de consentement.

Les formulaires d'obtention du consentement sont créés dans AdMob l'interface utilisateur. Une fois que vous avez déterminé que vous demanderez le consentement de l'utilisateur, l'étape suivante consiste à déterminer si un formulaire est disponible. Plusieurs raisons peuvent expliquer qu'un formulaire ne soit pas disponible:

  • Le suivi publicitaire limité est activé pour l'utilisateur.
  • Vous avez indiqué que l'utilisateur n'avait pas atteint l'âge minimal requis.

Pour vérifier si un formulaire est disponible, utilisez la propriété formStatus sur UMPConsentInformation, qui renvoie une énumération de type UMPFormStatus. Trois valeurs sont possibles pour UMPFormStatus:

  • UMPFormStatusUnknown : état du formulaire inconnu. Dans ce cas, vous devez appeler requestConsentInfoUpdateWithParameters:completionHandler:.
  • UMPFormStatusAvailable : un formulaire de consentement est disponible et peut être chargé.
  • UMPFormStatusUnavailable: aucun formulaire de consentement n'est disponible.

Ajoutez une méthode wrapper pour charger un formulaire comme suit:

Swift

// Request an update to the consent information.
UMPConsentInformation.sharedInstance.requestConsentInfoUpdate(
    withParameters: parameters,
    completionHandler: { [self] error in

      // The consent information has updated.
      if error != nil {
        // Handle the error.
      } else {
        // The consent information state was updated.
        // You are now ready to see if a form is available.
        let formStatus = UMPConsentInformation.sharedInstance.formStatus
        if formStatus == UMPFormStatus.available {
          loadForm()
        }
      }
    })
...
func loadForm() {

}

Objective-C

// Request an update to the consent information.
[UMPConsentInformation.sharedInstance
    requestConsentInfoUpdateWithParameters:parameters
                         completionHandler:^(NSError* _Nullable error) {

                           // The consent information has updated.
                           if (error) {
                             // Handle the error.
                           } else {
                             // The consent information state was updated.
                             // You are now ready to see if a form is available.
                             UMPFormStatus formStatus =
                                 UMPConsentInformation.sharedInstance
                                     .formStatus;
                             if (formStatus == UMPFormStatusAvailable) {
                               [self loadForm];
                             }
                           }
                         }];
...
- (void) loadForm {

}

Pour charger le formulaire, utilisez la méthode loadWithCompletionHandler: statique sur la classe UMPConsentForm. Cette méthode ne doit être appelée qu'à partir du thread principal. Modifiez votre méthode loadForm comme suit:

Swift

func loadForm() {
  UMPConsentForm.load(
      withCompletionHandler: { form, loadError in
        if loadError != nil {
          // Handle the error
        } else {
          // Present the form
        }
      })
}

Objective-C

- (void)loadForm {
  [UMPConsentForm
      loadWithCompletionHandler:^(UMPConsentForm *form, NSError *loadError) {
        if (loadError) {
          // Handle the error
        } else {
          // Present the form
        }
      }];
}

Présenter le formulaire si nécessaire

Pour présenter le formulaire de consentement, utilisez la méthode presentFromViewController:completionHandler: sur la classe UMPConsentForm. Vous devez déterminer si l'utilisateur a besoin du consentement avant de présenter le formulaire. Pour vérifier si le consentement est requis, examinez la propriété consentStatus de l'objet UMPConsentInformation, qui renvoie une énumération de type UMPConsentStatus. Il existe quatre valeurs possibles pour UMPConsentStatus :

  • UMPConsentStatusUnknown : état de consentement inconnu.
  • UMPConsentStatusRequired: l'autorisation de l'utilisateur est requise, mais pas encore obtenue.
  • UMPConsentStatusNotRequired : consentement de l'utilisateur non requis. Par exemple, il ne se trouve pas dans l'EEE ni au Royaume-Uni.
  • UMPConsentStatusObtained : consentement de l'utilisateur obtenu. Personnalisation non définie.

Modifiez votre méthode loadForm comme suit:

Swift

func loadForm() {
  UMPConsentForm.load(withCompletionHandler: { form, loadError in
    if loadError != nil {
      // Handle the error.
    } else {
      // Present the form. You can also hold on to the reference to present
      // later.
      if UMPConsentInformation.sharedInstance.consentStatus == UMPConsentStatus.required {
        form?.present(
            from: self,
            completionHandler: { dismissError in
              if UMPConsentInformation.sharedInstance.consentStatus == UMPConsentStatus.obtained {
                // App can start requesting ads.
              }

            })
      } else {
        // Keep the form available for changes to user consent.
      }
    }
  })
}

Objective-C

- (void)loadForm {
  [UMPConsentForm loadWithCompletionHandler:^(UMPConsentForm *form,
                                              NSError *loadError) {
    if (loadError) {
      // Handle the error.
    } else {
      // Present the form. You can also hold on to the reference to present
      // later.
      if (UMPConsentInformation.sharedInstance.consentStatus ==
          UMPConsentStatusRequired) {
        [form
            presentFromViewController:self
                    completionHandler:^(NSError *_Nullable dismissError) {
                      if (UMPConsentInformation.sharedInstance.consentStatus ==
                          UMPConsentStatusObtained) {
                        // App can start requesting ads.
                      }

                    }];
      } else {
        // Keep the form available for changes to user consent.
      }
    }
  }];
}

Si le consentement n'est pas obligatoire, vous pouvez conserver une référence au formulaire afin que l'utilisateur puisse modifier son état de consentement.

Tests

Forcer une zone géographique

Le SDK UMP permet de tester facilement le comportement de votre application comme si l'appareil était situé dans l'EEE ou au Royaume-Uni à l'aide de la propriété debugGeography de type UMPDebugGeography sur UMPDebugSettings.

Pour utiliser la fonctionnalité de débogage, vous devez fournir l'ID haché de l'appareil de test dans les paramètres de débogage de votre application. Si vous appelez requestConsentInfoUpdateWithParameters sans définir cette valeur, votre application consignera le hachage de l'ID requis lors de l'exécution.

Swift

let parameters = UMPRequestParameters()
let debugSettings = UMPDebugSettings()
debugSettings.testDeviceIdentifiers = ["TEST-DEVICE-HASHED-ID"]
debugSettings.geography = UMPDebugGeography.EEA
parameters.debugSettings = debugSettings
UMPConsentInformation.sharedInstance.requestConsentInfoUpdate(
    with: parameters,
    completionHandler: { error in
      ...
    })

Objective-C

UMPRequestParameters *parameters = [[UMPRequestParameters alloc] init];
UMPDebugSettings *debugSettings = [[UMPDebugSettings alloc] init];
debugSettings.testDeviceIdentifiers = @[ @"TEST-DEVICE-HASHED-ID" ];
debugSettings.geography = UMPDebugGeographyEEA;
parameters.debugSettings = debugSettings;
[UMPConsentInformation.sharedInstance
    requestConsentInfoUpdateWithParameters:parameters
                         completionHandler:^(NSError *_Nullable error){
                           ...
}];

Pour forcer le SDK à traiter l'appareil comme s'il ne se trouve pas dans l'EEE ni au Royaume-Uni, utilisez UMPDebugGeographyNotEEA. Notez que les paramètres de débogage ne fonctionnent que sur les appareils de test. Il n'est pas nécessaire d'ajouter les émulateurs à la liste des ID d'appareils, car les tests sont activés par défaut.

Lorsque vous testez votre application avec le SDK UMP, il peut être utile de réinitialiser l'état du SDK afin de simuler la première installation d'un utilisateur. Pour ce faire, le SDK fournit la méthode reset.

Swift

UMPConsentInformation.sharedInstance.reset()

Objective-C

[UMPConsentInformation.sharedInstance reset];

Vous devez également appeler la réinitialisation si vous décidez de supprimer complètement le SDK UMP de votre projet.

Différer la mesure de l'application (facultatif)

Par défaut, le SDK Google Mobile Ads initialise la mesure des applications et commence à envoyer à Google les données d'événements au niveau de l'utilisateur 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.

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

Pour retarder la mesure de l'application, ajoutez la clé GADDelayAppMeasurementInit avec la valeur booléenne YES au fichier Info.plist de votre application. Vous pouvez effectuer cette modification de manière automatisée:

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

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

Médiation

Si vous utilisez la médiation, vous devrez gérer le consentement de vos partenaires de médiation différemment en fonction du cadre de consentement que vous choisirez dans votre application. Google est compatible avec le cadre de consentement de l'IAB, mais vous permet également d'avoir votre propre solution de consentement personnalisé. Vous trouverez ci-dessous des informations détaillées sur la gestion de la médiation pour chacune de ces options. En savoir plus sur notre solution de consentement

Ni le SDK UMP ni le SDK Mobile Ads ne transfère les informations de consentement aux partenaires de médiation. Lorsqu'il utilise la solution IAB, le SDK UMP écrit des informations sur l'état de consentement dans le stockage local. Il est de la responsabilité de chaque SDK de médiation de lire les clés appropriées. Vérifiez auprès de chaque réseau tiers s'il accepte la solution IAB.

Si vous utilisez une solution de consentement personnalisé, vous êtes tenu d'informer les SDK tiers de l'état de consentement de votre application. Pour en savoir plus sur la transmission d'informations sur le consentement aux tiers concernés, veuillez consulter le guide d'intégration de chaque partenaire de médiation pour en savoir plus sur l'implémentation.

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

Swift

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

Objective-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. Notez toutefois que les détails de la mise en œuvre interne du SDK Google Mobile Ads sont susceptibles de changer.