Commencez, commencez

Conformément à l'accord de l'utilisateur dans l'UE de Google Policy Controller, vous devez communiquer certaines informations à vos utilisateurs dans l'Espace économique européen (EEE), au Royaume-Uni et obtenir son consentement pour l'utilisation de cookies ou de toute autre méthode de stockage en local, lorsque la législation l'impose, et d'utiliser des données à caractère personnel (telles que les identifiants publicitaires) pour diffuser des annonces. Ces règles reflètent les exigences de la directive vie privée et communications électroniques de l'UE, ainsi que celles de la 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 le SDK User Messaging Platform (UMP). Le SDK UMP a été mis à jour pour prendre en charge les dernières normes de l'IAB. Toutes ces configurations peuvent désormais être gérées dans AdMob la confidentialité et messagerie.

Prérequis

Créer un type de message

Créez des messages destinés aux utilisateurs avec l'une des types de messages destinés aux utilisateurs disponibles dans la section Confidentialité l'onglet "Messages" de votre AdMob Google Cloud. Le SDK UMP tente d'afficher un message utilisateur créé à partir de AdMob l'ID application dans votre projet. Si aucun message n'est configuré pour votre application, le SDK renvoie une erreur.

Pour en savoir plus, consultez À propos de la confidentialité et des messages

Ajouter l'ID application

Vous trouverez l'ID de votre application dans le Interface utilisateur d'AdMob. Ajoutez la pièce d'identité à votre à l'aide de l'extrait de code suivant:

Vous devez demander la mise à jour des informations sur le consentement de l'utilisateur pour chaque application lancer, à l'aide de requestConsentInfoUpdate(). Cela permet de déterminer si votre utilisateur doit donner son consentement, s'il ne l'a pas déjà fait ; ou si son consentement a expiré.

Voici un exemple de vérification de l'état au démarrage de l'application:

@override
void initState() {
  super.initState();

  // Create a ConsentRequestParameters object.
  final params = ConsentRequestParameters();

  // Request an update for the consent information.
  ConsentInformation.instance.requestConsentInfoUpdate(
    params,
    () async {
      // TODO: Load and present the consent form.
    },
    (FormError error) {
      // Handle the error.
    },
  );
}

Charger et afficher un formulaire de consentement si nécessaire

Une fois que vous avez reçu les toutes dernières informations concernant l'état de votre consentement, appelez loadAndShowConsentFormIfRequired() sur le ConsentForm pour charger un formulaire de consentement. Si le l'état du consentement est requis, le SDK charge un formulaire et le présente immédiatement à partir de l'adresse fournie. Le callback est appelé après la fermeture du formulaire. Si le consentement n'est pas requis, les callback est appelée immédiatement.

@override
void initState() {
  super.initState();

  // Create a ConsentRequestParameters object.
  final params = ConsentRequestParameters();

  // Request an update for the consent information.
  ConsentInformation.instance.requestConsentInfoUpdate(
    params,
    () async {
      ConsentForm.loadAndShowConsentFormIfRequired((loadAndShowError) {
        if (loadAndShowError != null) {
          // Consent gathering failed.
        }

        // Consent has been gathered.
      });
    },
    (FormError error) {
      // Handle the error.
    },
  );
}

Si vous devez effectuer des actions après que l'utilisateur a choisi ou ignoré dans le formulaire, placez cette logique dans callback pour votre formulaire.

Demander des annonces

Avant de demander des annonces dans votre application, vérifiez si vous avez obtenu le consentement des utilisateurs de l'utilisateur via canRequestAds(). Il y a deux endroits où vérifier le consentement des utilisateurs:

  1. Une fois que le consentement a été recueilli dans la session en cours.
  2. Immédiatement après avoir appelé requestConsentInfoUpdate(). Il est possible que le consentement ait été obtenu lors de la session précédente. En tant que latence nous vous recommandons de ne pas attendre la fin du rappel commencer à charger des annonces dès que possible après le lancement de votre application.

Si une erreur se produit lors du processus de collecte du consentement, vous devez pour tenter de demander des annonces. Le SDK UMP utilise l'état de consentement de l'autorisation session.

class AppExampleState extends State<AppExample> {

  // Use a bool to initialize the Mobile Ads SDK and load ads once.
  var _isMobileAdsInitializeCalled = false;

  @override
  void initState() {
    super.initState();

    // Create a ConsentRequestParameters object.
    final params = ConsentRequestParameters();

    // Request an update for the consent information.
    ConsentInformation.instance.requestConsentInfoUpdate(
      params,
      () async {
        ConsentForm.loadAndShowConsentFormIfRequired((loadAndShowError) {
          if (loadAndShowError != null) {
            // Consent gathering failed.
          }

          // Consent has been gathered.
          _initializeMobileAdsSDK();
        });
      },
      (FormError error) {
        // Handle the error.
      },
    );

    // Check if you can initialize the Mobile Ads SDK in parallel while
    // checking for new consent information. Consent obtained in the
    // previous session can be used to request ads.
    _initializeMobileAdsSDK();
  }

  void _initializeMobileAdsSDK() async {
    if (_isMobileAdsInitializeCalled) {
      return;
    }

    // Initialize the Mobile Ads SDK if the SDK has gathered consent aligned with
    // the app's configured messages.
    var canRequestAds = await ConsentInformation.instance.canRequestAds();
    if (canRequestAds) {
      setState(() {
        _isMobileAdsInitializeCalled = true;
      });

      // Initialize the Mobile Ads SDK.
      MobileAds.instance.initialize();

      // TODO: Request an ad.
    }
  }
}

Options de confidentialité

Certains formulaires de consentement nécessitent que l'utilisateur modifie son consentement à tout moment. Respecter les étapes suivantes pour ajouter un bouton d'options de confidentialité, si nécessaire.

Pour cela, les opérations suivantes sont nécessaires :

  1. Implémentez un élément d'interface utilisateur, comme un bouton sur la page des paramètres de votre application, qui peut déclencher un formulaire d'options de confidentialité.
  2. Une fois loadAndShowConsentFormIfRequired() l'opération terminée, vérifiez getPrivacyOptionsRequirementStatus() pour déterminer s'il faut afficher l'élément d'interface utilisateur pouvant présenter le formulaire d'options de confidentialité.
  3. Lorsqu'un utilisateur interagit avec votre élément d'interface utilisateur, appelez showPrivacyOptionsForm() pour afficher le formulaire afin que l'utilisateur puisse mettre à jour leurs options de confidentialité à tout moment.
class AppExampleState extends State<AppExample> {
  static const _privacySettingsText = 'Privacy Settings';

  // Use a bool to initialize the Mobile Ads SDK and load ads once.
  var _isMobileAdsInitializeCalled = false;

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'App Example',
      home: Scaffold(
          appBar: AppBar(
            title: const Text('App Example'),
            actions: _isMobileAdsSDKInitialized
                // Regenerate the options menu to include a privacy setting.
                ? _privacySettingsAppBarAction()
                : null
          ),
          body: // ...
      ),
    );
  }

  List<Widget> _privacySettingsAppBarAction() {
    return <Widget>[
      FutureBuilder(
          future: ConsentInformation.instance.isPrivacyOptionsRequired(),
          builder: (context, snapshot) {
            final bool visibility = snapshot.data ?? false;
            return Visibility(
                visible: visibility,
                child: PopupMenuButton<String>(
                  onSelected: (String result) {
                    if (result == _privacySettingsText) {
                      ConsentForm.showPrivacyOptionsForm((formError) {
                        if (formError != null) {
                          debugPrint(
                              "${formError.errorCode}: ${formError.message}");
                        }
                      });
                    }
                  },
                  itemBuilder: (BuildContext context) =>
                      <PopupMenuEntry<String>>[
                    const PopupMenuItem<String>(
                        value: _privacySettingsText,
                        child: Text(_privacySettingsText))
                  ],
                ));
          })
    ];
  }
}

Tests

Si vous souhaitez tester l'intégration dans votre application pendant le développement, suivez suivez ces étapes pour enregistrer votre appareil de test de manière programmatique. Veillez à supprimer le qui définit ces ID d'appareils de test avant de publier votre application.

  1. Appelez le requestConsentInfoUpdate().
  2. Recherchez dans la sortie du journal un message semblable à l'exemple suivant, affiche l'ID de votre appareil et explique comment l'ajouter en tant qu'appareil de test:

    Android

    Use new ConsentDebugSettings.Builder().addTestDeviceHashedId("33BE2250B43518CCDA7DE426D04EE231")
    to set this as a debug device.
    

    iOS

    <UMP SDK>To enable debug mode for this device,
    set: UMPDebugSettings.testDeviceIdentifiers = @[2077ef9a63d2b398840261c8221a0c9b]
    
  3. Copiez l'ID de votre appareil de test dans votre presse-papiers.

  4. Modifiez votre code pour appeler ConsentDebugSettings.testIdentifiers et transmettre la liste de vos ID d'appareils de test.

    ConsentDebugSettings debugSettings = ConsentDebugSettings(
      testIdentifiers: ["TEST-DEVICE-HASHED-ID"],
    );
    
    ConsentRequestParameters params =
        ConsentRequestParameters(consentDebugSettings: debugSettings);
    
    ConsentInformation.instance.requestConsentInfoUpdate(params, () async {
      // ...
    };
    

Forcer une zone géographique

Le SDK UMP permet de tester le comportement de votre application comme si l'appareil était situées dans l'EEE ou au Royaume-Uni par le biais de the DebugGeography field on ConsentDebugSettings. Notez que Les paramètres de débogage ne fonctionnent que sur les appareils de test.

ConsentDebugSettings debugSettings = ConsentDebugSettings(
  debugGeography: DebugGeography.debugGeographyEea,
  testIdentifiers: ["TEST-DEVICE-HASHED-ID"],
);

ConsentRequestParameters params =
    ConsentRequestParameters(consentDebugSettings: debugSettings);

ConsentInformation.instance.requestConsentInfoUpdate(params, () async {
  // ...
};

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

ConsentInformation.instance.reset();

Exemples sur GitHub