Cómo solicitar el consentimiento de usuarios de Europa

Requisitos previos

Completa la sección Primeros pasos con la versión 1.3.0 del complemento de GMA para Flutter, que admite el SDK de User Messaging Platform.

Lee Cómo afectan los requisitos de la IAB a los mensajes de consentimiento para usuarios de la UE.

Introducción

El SDK de UMP proporciona herramientas que permiten que los publicadores soliciten el consentimiento para anuncios personalizados y que cumplan con los requisitos de App Tracking Transparency (ATT) de Apple. Los publicadores pueden usar el SDK de UMP para controlar una de estas solicitudes o ambas con un solo formulario, ya que toda la configuración se realiza en Privacidad y mensajería de Ad Manager.

Según la Política de Consentimiento de Usuarios de la UE de Google, debes divulgar determinada información a los usuarios del Espacio Económico Europeo (EEE) y el Reino Unido, y obtener su consentimiento para usar cookies y otro tipo de almacenamiento local, cuando sea un requisito legal, así como utilizar datos personales (como AdID) para publicar anuncios. Esta política refleja los requisitos de la Directiva de Privacidad Electrónica y el Reglamento General de Protección de Datos (GDPR) de la UE.

Para ayudar a los publicadores a cumplir con sus obligaciones en virtud de esta política, Google ofrece el SDK de User Messaging Platform (UMP). El SDK de UMP se actualizó para admitir los estándares más recientes de la IAB. También simplificamos el proceso de configuración de los formularios de consentimiento y la enumeración de socios publicitarios. Ahora, todas estas opciones de configuración se pueden controlar de forma conveniente en Privacidad y mensajería de Ad Manager.

En esta guía, se explica cómo instalar el SDK, implementar las soluciones de IAB y habilitar las funciones de prueba.

Transparencia del seguimiento de aplicaciones (solo para iOS)

Si planeas usar el SDK de UMP para cumplir con los requisitos de Transparencia en el Seguimiento de Aplicaciones de Apple, asegúrate de haber creado, configurado y publicado tu mensaje de ATT con la Privacidad y mensajería de Ad Manager.

Para que el SDK de UMP muestre un mensaje de alerta personalizado, actualiza tu Info.plist para agregar la clave NSUserTrackingUsageDescription con una cadena de mensaje personalizada que describa tu uso.

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

La descripción de uso aparece como parte del diálogo de ATT cuando presentas el formulario de consentimiento:

A continuación, deberás vincular el framework AppTrackingTransparency:

Mientras realizas pruebas, recuerda que, según los requisitos de Apple, el diálogo de ATT del IDFA solo aparecerá una vez, ya que requestTrackingAuthorization: es una solicitud única. Para que la alerta aparezca por segunda vez, debes desinstalar y reinstalar la app en el dispositivo de prueba.

Usa el SDK

El SDK está diseñado para usarse de manera lineal. Los pasos para usar el SDK son los siguientes:

  1. Solicita la información de consentimiento más reciente.
  2. Comprueba si se requiere el consentimiento.
  3. Verifica si hay un formulario disponible y, de ser así, cárgalo.
  4. Presenta el formulario.
  5. Proporciona una forma para que los usuarios cambien su consentimiento.

Se recomienda que solicites una actualización de la información de consentimiento cada vez que se inicie la app. Esto determinará si el usuario debe dar su consentimiento o no.

final params = ConsentRequestParameters();
ConsentInformation.instance.requestConsentInfoUpdate(
  params,
  () async {
    // The consent information state was updated.
    // You are now ready to check if a form is available.
  },
  (FormError error) {
    // Handle the error
  },
);

Cargar un formulario si está disponible

Los formularios para obtener el consentimiento se crean en la IU de Ad Manager. Una vez que hayas determinado que solicitarás el consentimiento de un usuario, el siguiente paso es determinar si hay un formulario disponible. Existen varios motivos por los que un formulario puede no estar disponible, por ejemplo:

  • El usuario habilitó un límite en el seguimiento de anuncios.
  • Etiquetaste al usuario como que no tiene la edad de consentimiento.

Para verificar si hay un formulario disponible, usa el método isConsentFormAvailable() en la instancia ConsentInformation. Agrega un método wrapper para cargar un formulario:

final params = ConsentRequestParameters();
ConsentInformation.instance.requestConsentInfoUpdate(
  params,
  () async {
    if (await ConsentInformation.instance.isConsentFormAvailable()) {
      loadForm();
    }
  },
  (FormError error) {
    // Handle the error
  },
);

Para cargar el formulario, usarás el método estático loadConsentForm() en la clase ConsentForm. Modifica tu método loadForm() de la siguiente manera:

void loadForm() {
  ConsentForm.loadConsentForm(
    (ConsentForm consentForm) async {
      // Present the form
    },
    (FormError formError) {
      // Handle the error
    },
  );
}

Presenta el formulario si es necesario

Para presentar el formulario de consentimiento, usa el método show() en la clase ConsentForm. Debes determinar si el usuario necesita su consentimiento antes de presentar el formulario. Para verificar si se requiere el consentimiento, llama a getConsentStatus() en el objeto ConsentInformation, que muestra una enumeración de tipo ConsentStatus. Hay cuatro valores posibles para ConsentStatus:

  • unknown: Estado de consentimiento desconocido.
  • required: Se requiere el consentimiento del usuario, pero aún no se obtuvo.
  • notRequired: No se requiere el consentimiento del usuario. Por ejemplo, si el usuario no se encuentra en el EEE ni en el Reino Unido.
  • obtained: Se obtuvo el consentimiento del usuario. No se definió la personalización.

Modifica tu método loadForm de la siguiente manera:

void loadForm() {
  ConsentForm.loadConsentForm(
    (ConsentForm consentForm) async {
      var status = await ConsentInformation.instance.getConsentStatus();
      if (status == ConsentStatus.required) {
        consentForm.show(
          (FormError formError) {
            // Handle dismissal by reloading form
            loadForm();
          },
        );
      }
    },
    (formError) {
      // Handle the error
    },
  );
}

Si no se requiere consentimiento, puedes mantener una referencia al formulario para que tu usuario pueda cambiar su estado de consentimiento.

Prueba

Cómo forzar una ubicación geográfica

El SDK de UMP proporciona una forma de probar el comportamiento de tu app como si el dispositivo se encontrara en el EEE mediante ConsentDebugSettings.debugGeography.

Deberás proporcionar el ID con hash de tu dispositivo de prueba en la configuración de depuración de la app para usar la función de depuración. Si llamas a requestConsentInfoUpdate() sin configurar este valor, tu app registrará el hash de ID requerido cuando se ejecute.

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

ConsentRequestParameters params = ConsentRequestParameters(
  consentDebugSettings: debugSettings);

ConsentInformation.instance.requestConsentInfoUpdate(
  params,
  () {},
  (error) {});

Para forzar al SDK a tratar el dispositivo como si no estuviera en el EEE o el Reino Unido, usa DebugGeography.debugGeographyNotEea. Ten en cuenta que la configuración de depuración solo funciona en dispositivos de prueba. No es necesario agregar los emuladores a la lista de ID de dispositivos, ya que tienen las pruebas habilitadas de forma predeterminada.

Cuando pruebes tu app con el SDK de UMP, tal vez te resulte útil restablecer el estado del SDK, de modo que puedas simular la experiencia de la primera instalación de un usuario. Para ello, el SDK proporciona el método reset.

ConsentInformation.instance.reset();

También debes llamar al restablecimiento si decides quitar el SDK de UMP por completo de tu proyecto.

Mediación

Si usas la mediación, deberás manejar el consentimiento de tus socios de mediación de manera diferente según el marco de trabajo de consentimiento que elijas usar en tu app. Google admite el Marco de trabajo de consentimiento de IAB, pero también te permite tener tu propia solución de consentimiento personalizada. A continuación, se presentan los detalles sobre cómo manejar la mediación en cada una de estas opciones. Obtén más información sobre nuestra solución de consentimiento.

Ni el SDK de UMP ni el SDK de anuncios para dispositivos móviles reenvían información de consentimiento a los socios de mediación. En su lugar, cuando se usa la solución de IAB, el SDK de UMP escribe la información del estado de consentimiento en el almacenamiento local y es responsabilidad del SDK de cada socio de mediación leer las claves apropiadas. Asegúrate de consultar con cada red de terceros para determinar si admite la solución de IAB.

Si usas una solución de consentimiento personalizada, es tu responsabilidad notificar a los SDKs de terceros sobre el estado de consentimiento de tu app. Cada red de mediación tiene sus propias APIs para administrar el consentimiento, que están documentadas para iOS y Android.

Consulta Cómo usar las APIs específicas de red para aprender a llamar a estas APIs desde Dart.

El comportamiento predeterminado del SDK de anuncios de Google para dispositivos móviles consiste en publicar anuncios personalizados. Si un usuario dio su consentimiento para recibir solo anuncios no personalizados, puedes configurar un objeto AdManagerAdRequest con el siguiente código para especificar que solo se deben solicitar anuncios no personalizados:

final AdManagerAdRequest = AdManagerAdRequest(nonPersonalizedAds: true);

La Política de Consentimiento de Usuarios de la UE de Google requiere que obtengas el consentimiento para la lista completa de proveedores de tecnología publicitaria configurados para tus IDs de publicador antes de mostrar anuncios personalizados, incluso si usas una solución de mediación de terceros para enviar solicitudes de anuncios a Google.