Bienvenidos a este tutorial sobre cómo implementar un aviso de Consentimiento obligatorio para mostrar anuncios Admob en Android Java y Kotlin.
Para implementar el anuncio de consentimiento, hemos configurado previamente nuestra aplicación como indicamos en este tutorial:
Vamos a utilizar el SDK de Google Admob: https://developers.google.com/admob/android/privacy?hl=es-419
Lo primero que vamos a hacer es ir a app/build.gradle y añadimos la siguiente dependencia:
dependencies {
implementation 'com.google.android.ump:user-messaging-platform:2.1.0'
}
Ahora vamos a nuestro activity principal, en mi caso MainActivity.java y añadimos lo siguiente:
- Creamos estas variables:
//Aviso de Google Admob para UE
private ConsentInformation consentInformation;
// Use an atomic boolean to initialize the Google Mobile Ads SDK and load ads once.
private final AtomicBoolean isMobileAdsInitializeCalled = new AtomicBoolean(false);
- Sustituimos el inicializar anuncios si lo tuviéramos, dentro de oncreate (
//MobileAds.initialize(this);) por esto:
solicitarConsentimientoAnuncios();
- Creamos la función
solicitarConsentimientoAnuncios():
private void solicitarConsentimientoAnuncios() {
// Set tag for under age of consent. false means users are not under age
// of consent.
ConsentRequestParameters params = new ConsentRequestParameters
.Builder()
.setTagForUnderAgeOfConsent(false)
.build();
consentInformation = UserMessagingPlatform.getConsentInformation(this);
consentInformation.requestConsentInfoUpdate(
this,
params,
(ConsentInformation.OnConsentInfoUpdateSuccessListener) () -> {
UserMessagingPlatform.loadAndShowConsentFormIfRequired(
this,
(ConsentForm.OnConsentFormDismissedListener) loadAndShowError -> {
if (loadAndShowError != null) {
// Consent gathering failed.
Log.w("TAG", String.format("%s: %s",
loadAndShowError.getErrorCode(),
loadAndShowError.getMessage()));
}
// Consent has been gathered.
if (consentInformation.canRequestAds()) {
initializeMobileAdsSdk();
}
}
);
},
(ConsentInformation.OnConsentInfoUpdateFailureListener) requestConsentError -> {
// Consent gathering failed.
Log.w("TAG", String.format("%s: %s",
requestConsentError.getErrorCode(),
requestConsentError.getMessage()));
});
// Check if you can initialize the Google Mobile Ads SDK in parallel
// while checking for new consent information. Consent obtained in
// the previous session can be used to request ads.
if (consentInformation.canRequestAds()) {
initializeMobileAdsSdk();
}
}
- Creamos la función
initializeMobileAdsSdk();
private void initializeMobileAdsSdk() {
if (isMobileAdsInitializeCalled.getAndSet(true)) {
return;
}
// Initialize the Google Mobile Ads SDK.
MobileAds.initialize(this);
}
Y listo, ya tenemos nuestra ventana de notificación preparada.

Finalmente, el código en conjunto queda de la siguiente forma:
//Aviso de Google Admob para UE
private ConsentInformation consentInformation;
// Use an atomic boolean to initialize the Google Mobile Ads SDK and load ads once.
private final AtomicBoolean isMobileAdsInitializeCalled = new AtomicBoolean(false);
...
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
...
//MobileAds.initialize(this);
solicitarConsentimientoAnuncios();
...
}
private void solicitarConsentimientoAnuncios() {
// Set tag for under age of consent. false means users are not under age
// of consent.
ConsentRequestParameters params = new ConsentRequestParameters
.Builder()
.setTagForUnderAgeOfConsent(false)
.build();
consentInformation = UserMessagingPlatform.getConsentInformation(this);
consentInformation.requestConsentInfoUpdate(
this,
params,
(ConsentInformation.OnConsentInfoUpdateSuccessListener) () -> {
UserMessagingPlatform.loadAndShowConsentFormIfRequired(
this,
(ConsentForm.OnConsentFormDismissedListener) loadAndShowError -> {
if (loadAndShowError != null) {
// Consent gathering failed.
Log.w("TAG", String.format("%s: %s",
loadAndShowError.getErrorCode(),
loadAndShowError.getMessage()));
}
// Consent has been gathered.
if (consentInformation.canRequestAds()) {
initializeMobileAdsSdk();
}
}
);
},
(ConsentInformation.OnConsentInfoUpdateFailureListener) requestConsentError -> {
// Consent gathering failed.
Log.w("TAG", String.format("%s: %s",
requestConsentError.getErrorCode(),
requestConsentError.getMessage()));
});
// Check if you can initialize the Google Mobile Ads SDK in parallel
// while checking for new consent information. Consent obtained in
// the previous session can be used to request ads.
if (consentInformation.canRequestAds()) {
initializeMobileAdsSdk();
}
}
private void initializeMobileAdsSdk() {
if (isMobileAdsInitializeCalled.getAndSet(true)) {
return;
}
// Initialize the Google Mobile Ads SDK.
MobileAds.initialize(this);
}
Extra: Versión con objeto, más simplificada y rápida. Java y Kotlin
Versión Java:
Recuerda añadir la librería:
implementation 'com.google.android.ump:user-messaging-platform:2.1.0'
He creado una versión directamente en un objeto, que nos permitirá que sea más rápido y sencillo.
AdmobAlert.java
import android.app.Activity;
import android.util.Log;
import com.google.android.gms.ads.MobileAds;
import com.google.android.ump.ConsentForm;
import com.google.android.ump.ConsentInformation;
import com.google.android.ump.ConsentRequestParameters;
import com.google.android.ump.UserMessagingPlatform;
import java.util.concurrent.atomic.AtomicBoolean;
public class AdmobAlert {
private ConsentInformation consentInformation;
// Use an atomic boolean to initialize the Google Mobile Ads SDK and load ads once.
private final AtomicBoolean isMobileAdsInitializeCalled = new AtomicBoolean(false);
public AdmobAlert(Activity activity) {
solicitarConsentimientoAnuncios(activity);
}
private void solicitarConsentimientoAnuncios(Activity activity) {
// Set tag for under age of consent. false means users are not under age
// of consent.
ConsentRequestParameters params = new ConsentRequestParameters
.Builder()
.setTagForUnderAgeOfConsent(false)
.build();
consentInformation = UserMessagingPlatform.getConsentInformation(activity);
consentInformation.requestConsentInfoUpdate(
activity,
params,
(ConsentInformation.OnConsentInfoUpdateSuccessListener) () -> {
UserMessagingPlatform.loadAndShowConsentFormIfRequired(
activity,
(ConsentForm.OnConsentFormDismissedListener) loadAndShowError -> {
if (loadAndShowError != null) {
// Consent gathering failed.
Log.w("TAG", String.format("%s: %s",
loadAndShowError.getErrorCode(),
loadAndShowError.getMessage()));
}
// Consent has been gathered.
if (consentInformation.canRequestAds()) {
initializeMobileAdsSdk(activity);
}
}
);
},
(ConsentInformation.OnConsentInfoUpdateFailureListener) requestConsentError -> {
// Consent gathering failed.
Log.w("TAG", String.format("%s: %s",
requestConsentError.getErrorCode(),
requestConsentError.getMessage()));
});
// Check if you can initialize the Google Mobile Ads SDK in parallel
// while checking for new consent information. Consent obtained in
// the previous session can be used to request ads.
if (consentInformation.canRequestAds()) {
initializeMobileAdsSdk(activity);
}
}
private void initializeMobileAdsSdk(Activity activity) {
if (isMobileAdsInitializeCalled.getAndSet(true)) {
return;
}
// Initialize the Google Mobile Ads SDK.
MobileAds.initialize(activity);
}
}
Y solo tendremos que invocar este objeto en nuestro proyecto, dónde querramos mostrarlo, por ejemplo en MainActvity.java
new AdmobAlert(this);
Versión Kotlin
Recuerda añadir la librería:
implementation 'com.google.android.ump:user-messaging-platform:2.1.0'
AdmobAlert.kt
import android.app.Activity
import android.util.Log
import com.google.android.gms.ads.MobileAds
import com.google.android.ump.ConsentForm
import com.google.android.ump.ConsentInformation
import com.google.android.ump.ConsentRequestParameters
import com.google.android.ump.UserMessagingPlatform
import java.util.concurrent.atomic.AtomicBoolean
class AdmobAlert(activity: Activity) {
private var consentInformation: ConsentInformation
// Use an atomic boolean to initialize the Google Mobile Ads SDK and load ads once.
private val isMobileAdsInitializeCalled = AtomicBoolean(false)
init {
solicitarConsentimientoAnuncios(activity)
}
private fun solicitarConsentimientoAnuncios(activity: Activity) {
// Set tag for under age of consent. false means users are not under age
// of consent.
val params = ConsentRequestParameters
.Builder()
.setTagForUnderAgeOfConsent(false)
.build()
consentInformation = UserMessagingPlatform.getConsentInformation(activity)
consentInformation.requestConsentInfoUpdate(
activity,
params,
ConsentInformation.OnConsentInfoUpdateSuccessListener {
UserMessagingPlatform.loadAndShowConsentFormIfRequired(
activity,
ConsentForm.OnConsentFormDismissedListener { loadAndShowError ->
if (loadAndShowError != null) {
// Consent gathering failed.
Log.w(
"TAG",
String.format(
"%s: %s",
loadAndShowError.errorCode,
loadAndShowError.message
)
)
}
// Consent has been gathered.
if (consentInformation.canRequestAds()) {
initializeMobileAdsSdk(activity)
}
}
)
},
ConsentInformation.OnConsentInfoUpdateFailureListener { requestConsentError ->
// Consent gathering failed.
Log.w(
"TAG",
String.format(
"%s: %s",
requestConsentError.errorCode,
requestConsentError.message
)
)
})
// Check if you can initialize the Google Mobile Ads SDK in parallel
// while checking for new consent information. Consent obtained in
// the previous session can be used to request ads.
if (consentInformation.canRequestAds()) {
initializeMobileAdsSdk(activity)
}
}
private fun initializeMobileAdsSdk(activity: Activity) {
if (isMobileAdsInitializeCalled.getAndSet(true)) {
return
}
// Initialize the Google Mobile Ads SDK.
MobileAds.initialize(activity)
}
}
Para invocarlo:
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import com.app.fuentes_de_agua.Util.ads.AdmobAlert
class TuActividad : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.tu_layout)
// Crear una instancia de AdmobAlert y pasarle la referencia de la actividad
val admobAlert = AdmobAlert(this)
}
}

Ingeniero en Informática, Investigador, me encanta crear cosas o arreglarlas y darles una nueva vida. Escritor y poeta. Más de 20 APPs publicadas y un libro en Amazon.
2 comentarios en «Implementar aviso de Consentimiento de Usuarios UE con Google Admob y Android (UMP SDK – Alert Admob)»