Comenzar

El SDK de Google User Messaging Platform (UMP) es una herramienta de privacidad y mensajería que te ayuda a administrar las opciones de privacidad. Para obtener más información, consulta Información sobre Privacidad y mensajería.

Crea un tipo de mensaje

Crea mensajes para los usuarios con uno de los tipos de mensajes para los usuarios disponibles en la pestaña Privacidad y mensajería de tu cuenta de AdMob. El SDK de UMP intenta mostrar un mensaje de privacidad creado a partir del ID de aplicación de AdMob configurado en tu proyecto.

Para obtener más información, consulta Acerca de la privacidad y la mensajería.

Para obtener el consentimiento, completa los siguientes pasos:

  1. Solicita la información de consentimiento del usuario más reciente.
  2. Carga y presenta un formulario de consentimiento, si es necesario.

Debes solicitar una actualización de la información de consentimiento del usuario cada vez que se inicie la app con requestConsentInfoUpdate(). Esta solicitud verifica lo siguiente:

  • Si se requiere consentimiento. Por ejemplo, se requiere el consentimiento por primera vez o venció la decisión de consentimiento anterior.
  • Si se requiere un punto de entrada de opciones de privacidad. Algunos mensajes de privacidad requieren que las apps permitan a los usuarios modificar sus opciones de privacidad en cualquier momento.

Cargar y presentar un formulario de mensaje de privacidad si es necesario

Después de recibir el estado de consentimiento más actualizado, llama a loadAndShowConsentFormIfRequired() para cargar los formularios necesarios para recopilar el consentimiento del usuario. Después de la carga, los formularios se presentan de inmediato.

En el siguiente código, se muestra cómo solicitar la información de consentimiento más reciente del usuario. Si es necesario, el código carga y presenta un formulario de mensaje de privacidad:

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

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

  // Request an update to consent information on every app launch.
  ConsentInformation.instance.requestConsentInfoUpdate(
    params,
    () async {
      ConsentForm.loadAndShowConsentFormIfRequired((loadAndShowError) {
        if (loadAndShowError != null) {
          // Consent gathering failed.
        }

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

Opciones de privacidad

Algunos formularios de mensajes de privacidad se presentan desde un punto de entrada de opciones de privacidad renderizado por el publicador, lo que permite a los usuarios administrar sus opciones de privacidad en cualquier momento. Para obtener más información sobre qué mensaje ven los usuarios en el punto de entrada de las opciones de privacidad, consulta Tipos de mensajes de usuario disponibles.

Verifica si se requiere un punto de entrada de opciones de privacidad

Después de llamar a requestConsentInfoUpdate(), verifica getPrivacyOptionsRequirementStatus() para determinar si se requiere un punto de entrada de opciones de privacidad para tu app:

/// Helper variable to determine if the privacy options entry point is required.
Future<bool> isPrivacyOptionsRequired() async {
  return await ConsentInformation.instance
      .getPrivacyOptionsRequirementStatus() ==
      PrivacyOptionsRequirementStatus.required;
}

Agrega un elemento visible a tu app

Si se requiere un punto de entrada de privacidad, agrega a tu app un elemento de IU visible y que se pueda interactuar que presente el formulario de opciones de privacidad. Si no se requiere un punto de entrada de privacidad, configura el elemento de la IU para que no sea visible ni interactivo.

ConsentInformation.instance.requestConsentInfoUpdate(
  params,
  () async {
    ConsentForm.loadAndShowConsentFormIfRequired((loadAndShowError) {
      if (loadAndShowError != null) {
        // Consent gathering failed.
      }

      // Consent has been gathered.

      // Redraw the app bar actions if a privacy options entry point is required.
      if (await isPrivacyOptionsRequired()) {
        setState(() {
          _isPrivacyOptionsRequired = true;
        });
      }
    });
  },
  // ...

Presenta el formulario de opciones de privacidad

Cuando el usuario interactúe con tu elemento, presenta el formulario de opciones de privacidad:

ConsentForm.showPrivacyOptionsForm((formError) {
  if (formError != null) {
    debugPrint("${formError.errorCode}: ${formError.message}");
  }
});

Solicitar anuncios

Antes de solicitar anuncios en tu app, verifica si obtuviste el consentimiento del usuario con canRequestAds(). Hay dos lugares que debes verificar mientras recopilas el consentimiento:

  • Después de que se haya recopilado el consentimiento en la sesión actual.
  • Inmediatamente después de llamar a requestConsentInfoUpdate(). Es posible que se haya obtenido el consentimiento en la sesión anterior. Como práctica recomendada para la latencia, te recomendamos que no esperes a que se complete la devolución de llamada para que puedas comenzar a cargar anuncios lo antes posible después de que se inicie la app.

Si se produce un error durante el proceso de recopilación de consentimiento, debes verificar si puedes solicitar anuncios. El SDK de UMP usa el estado de consentimiento de la sesión anterior.

El siguiente código verifica si puedes solicitar anuncios durante el proceso de recopilación de consentimiento:

ConsentInformation.instance.requestConsentInfoUpdate(
  params,
  () async {
    ConsentForm.loadAndShowConsentFormIfRequired((loadAndShowError) {
      if (loadAndShowError != null) {
        // Consent gathering failed.
      }

      // Consent has been gathered.
      if (await ConsentInformation.instance.canRequestAds()) {
        _initializeGoogleMobileAdsSDK()
      }
      // ...
    });
  },
  (FormError 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.
if (await ConsentInformation.instance.canRequestAds()) {
  _initializeGoogleMobileAdsSDK()
}

El siguiente código configura el SDK de anuncios de Google para dispositivos móviles después de que se obtiene el consentimiento del usuario:

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

  _isMobileAdsInitializeCalled = true;

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

  // Load an ad.
  _loadAd();
}

Prueba

Si quieres probar la integración en tu app mientras la desarrollas, sigue estos pasos para registrar tu dispositivo de prueba de forma programática. Asegúrate de quitar el código que establece estos IDs de dispositivos de prueba antes de lanzar la app.

  1. Llamar a requestConsentInfoUpdate()
  2. Busca un mensaje similar al siguiente ejemplo en el resultado del registro, que muestra el ID de tu dispositivo y cómo agregarlo como dispositivo de prueba:

    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. Copia el ID del dispositivo de prueba en el portapapeles.

  4. Modifica tu código para llamar a ConsentDebugSettings.testIdentifiers y pasar una lista de los IDs de tus dispositivos de prueba.

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

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 ubicara en varias regiones, como el EEE o el Reino Unido, con debugGeography. Ten en cuenta que la configuración de depuración solo funciona en dispositivos de prueba.

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

ConsentRequestParameters params =
    ConsentRequestParameters(consentDebugSettings: debugSettings);

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

Cuando pruebes tu app con el SDK de UMP, te recomendamos que restablezcas el estado del SDK para que puedas simular la primera experiencia de instalación de un usuario. El SDK proporciona el método reset() para hacerlo.

ConsentInformation.instance.reset();

Ejemplos en GitHub

Consulta un ejemplo completo de la integración del SDK de UMP que se describe en esta página en nuestros ejemplos de Flutter.