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.

Requisitos previos

  • Android con nivel de API 21 o superior

Crea un tipo de mensaje

Crea mensajes para los usuarios con uno de los tipos de mensajes disponibles para los usuarios 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.

Cómo instalar con Gradle

Agrega la dependencia del SDK de Google User Messaging Platform al archivo Gradle a nivel de la app de tu módulo, que suele ser app/build.gradle:

dependencies {
  implementation("com.google.android.ump:user-messaging-platform:3.1.0")
}

Después de realizar los cambios en el build.gradle de tu app, asegúrate de sincronizar tu proyecto con los archivos de Gradle.

Agrega el ID de aplicación

Puedes encontrar el ID de aplicación en la IU de AdMob. Agrega el ID a tu AndroidManifest.xml con el siguiente fragmento de código:

<manifest>
  <application>
    <meta-data
        android:name="com.google.android.gms.ads.APPLICATION_ID"
        android:value="ca-app-pub-xxxxxxxxxxxxxxxx~yyyyyyyyyy"/>
  </application>
</manifest>

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 en cada inicio de la app mediante requestConsentInfoUpdate(). Con esta solicitud, se 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 que los usuarios modifiquen sus opciones de privacidad en cualquier momento.

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

Una vez que recibas el estado de consentimiento más actualizado, llama a loadAndShowConsentFormIfRequired() para cargar los formularios necesarios para recopilar el consentimiento de los usuarios. 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:

Java


// Requesting an update to consent information should be called on every app launch.
consentInformation.requestConsentInfoUpdate(
    activity,
    params,
    () ->
        UserMessagingPlatform.loadAndShowConsentFormIfRequired(
            activity,
            formError -> {
              // Consent has been gathered.
              onConsentGatheringCompleteListener.consentGatheringComplete(formError);
            }),
    requestConsentError ->
        onConsentGatheringCompleteListener.consentGatheringComplete(requestConsentError));

Kotlin


// Requesting an update to consent information should be called on every app launch.
consentInformation.requestConsentInfoUpdate(
  activity,
  params,
  {
    UserMessagingPlatform.loadAndShowConsentFormIfRequired(activity) { formError ->
      // Consent has been gathered.
      onConsentGatheringCompleteListener.consentGatheringComplete(formError)
    }
  },
  { requestConsentError ->
    onConsentGatheringCompleteListener.consentGatheringComplete(requestConsentError)
  },
)

Opciones de privacidad

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

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:

Java


/** Helper variable to determine if the privacy options form is required. */
public boolean isPrivacyOptionsRequired() {
  return consentInformation.getPrivacyOptionsRequirementStatus()
      == PrivacyOptionsRequirementStatus.REQUIRED;
}

Kotlin


/** Helper variable to determine if the privacy options form is required. */
val isPrivacyOptionsRequired: Boolean
  get() =
    consentInformation.privacyOptionsRequirementStatus ==
      ConsentInformation.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 la IU visible y con capacidad de interacción 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 interactúe.

Java


if (googleMobileAdsConsentManager.isPrivacyOptionsRequired()) {
  // Regenerate the options menu to include a privacy setting.
  invalidateOptionsMenu();
}

Kotlin


if (googleMobileAdsConsentManager.isPrivacyOptionsRequired) {
  // Regenerate the options menu to include a privacy setting.
  invalidateOptionsMenu()
}

Presenta el formulario de opciones de privacidad

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

Java


UserMessagingPlatform.showPrivacyOptionsForm(activity, onConsentFormDismissedListener);

Kotlin


UserMessagingPlatform.showPrivacyOptionsForm(activity, onConsentFormDismissedListener)

Solicitar anuncios

Antes de solicitar anuncios en tu app, verifica si obtuviste el consentimiento del usuario cuando usa canRequestAds(). Hay dos lugares que puedes verificar mientras obtienes el consentimiento:

  • Una vez 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:

Java


googleMobileAdsConsentManager.gatherConsent(
    this,
    consentError -> {
      if (consentError != null) {
        // Consent not obtained in current session.
        Log.w(
            TAG,
            String.format("%s: %s", consentError.getErrorCode(), consentError.getMessage()));
      }

      if (googleMobileAdsConsentManager.canRequestAds()) {
        initializeMobileAdsSdk();
      }
      // ...
    });

// This sample attempts to load ads using consent obtained in the previous session.
if (googleMobileAdsConsentManager.canRequestAds()) {
  initializeMobileAdsSdk();
}

Kotlin


googleMobileAdsConsentManager.gatherConsent(this) { error ->
  if (error != null) {
    // Consent not obtained in current session.
    Log.d(TAG, "${error.errorCode}: ${error.message}")
  }

  if (googleMobileAdsConsentManager.canRequestAds) {
    initializeMobileAdsSdk()
  }
  // ...
}

// This sample attempts to load ads using consent obtained in the previous session.
if (googleMobileAdsConsentManager.canRequestAds) {
  initializeMobileAdsSdk()
}

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:

Java


private void initializeMobileAdsSdk() {
  if (isMobileAdsInitializeCalled.getAndSet(true)) {
    return;
  }
  new Thread(
          () -> {
            // Initialize the Google Mobile Ads SDK on a background thread.
            MobileAds.initialize(this, initializationStatus -> {});

            // Load an ad on the main thread.
            runOnUiThread(this::loadBanner);
          })
      .start();
}

Kotlin


private fun initializeMobileAdsSdk() {
  if (isMobileAdsInitializeCalled.getAndSet(true)) {
    return
  }
  CoroutineScope(Dispatchers.IO).launch {
    // Initialize the Google Mobile Ads SDK on a background thread.
    MobileAds.initialize(this@MainActivity) {}

    runOnUiThread {
      // Load an ad on the main thread.
      loadBanner()
    }
  }
}

Prueba

Si quieres probar la integración en tu app mientras desarrollas, sigue estos pasos para registrar tu dispositivo de prueba de manera 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. Revisa el resultado del registro en busca de un mensaje similar al siguiente ejemplo, que muestra el ID de tu dispositivo y cómo agregarlo como dispositivo de prueba:

    Use new ConsentDebugSettings.Builder().addTestDeviceHashedId("33BE2250B43518CCDA7DE426D04EE231") to set this as a debug device.
    
  3. Copia el ID del dispositivo de prueba en el portapapeles.

  4. Modifica el código para llamar a ConsentDebugSettings.Builder().TestDeviceHashedIds y pasar una lista de los IDs de tus dispositivos de prueba.

    Java

    ConsentDebugSettings debugSettings = new ConsentDebugSettings.Builder(this)
        .addTestDeviceHashedId("TEST-DEVICE-HASHED-ID")
        .build();
    
    ConsentRequestParameters params = new ConsentRequestParameters
        .Builder()
        .setConsentDebugSettings(debugSettings)
        .build();
    
    consentInformation = UserMessagingPlatform.getConsentInformation(this);
    // Include the ConsentRequestParameters in your consent request.
    consentInformation.requestConsentInfoUpdate(
        this,
        params,
        // ...
    );
    

    Kotlin

    val debugSettings = ConsentDebugSettings.Builder(this)
        .addTestDeviceHashedId("TEST-DEVICE-HASHED-ID")
        .build()
    
    val params = ConsentRequestParameters
        .Builder()
        .setConsentDebugSettings(debugSettings)
        .build()
    
    consentInformation = UserMessagingPlatform.getConsentInformation(this)
    // Include the ConsentRequestParameters in your consent request.
    consentInformation.requestConsentInfoUpdate(
        this,
        params,
        // ...
    )
    

Fuerza una ubicación geográfica

El SDK de UMP proporciona una forma de probar el comportamiento de tu app como si el dispositivo estuviera ubicado en varias regiones, como el EEE o el Reino Unido, mediante setDebugGeography(). Ten en cuenta que la configuración de depuración solo funciona en dispositivos de prueba.

Java

ConsentDebugSettings debugSettings = new ConsentDebugSettings.Builder(this)
    .setDebugGeography(ConsentDebugSettings.DebugGeography.DEBUG_GEOGRAPHY_EEA)
    .addTestDeviceHashedId("TEST-DEVICE-HASHED-ID")
    .build();

ConsentRequestParameters params = new ConsentRequestParameters
    .Builder()
    .setConsentDebugSettings(debugSettings)
    .build();

consentInformation = UserMessagingPlatform.getConsentInformation(this);
// Include the ConsentRequestParameters in your consent request.
consentInformation.requestConsentInfoUpdate(
    this,
    params,
    ...
);

Kotlin

val debugSettings = ConsentDebugSettings.Builder(this)
    .setDebugGeography(ConsentDebugSettings.DebugGeography.DEBUG_GEOGRAPHY_EEA)
    .addTestDeviceHashedId("TEST-DEVICE-HASHED-ID")
    .build()

val params = ConsentRequestParameters
    .Builder()
    .setConsentDebugSettings(debugSettings)
    .build()

consentInformation = UserMessagingPlatform.getConsentInformation(this)
// Include the ConsentRequestParameters in your consent request.
consentInformation.requestConsentInfoUpdate(
    this,
    params,
    ...
)

Cuando pruebes tu app con el SDK de UMP, puede resultarte útil restablecer el estado del SDK para que puedas simular la experiencia de primera instalación de un usuario. Para ello, el SDK proporciona el método reset().

Java

consentInformation.reset();

Kotlin

consentInformation.reset()

Ejemplos en GitHub

Consulta un ejemplo completo de la integración del SDK de UMP que se aborda en esta página en BannerExample de Java y BannerExample de Kotlin.