Los anuncios de banner ocupan un lugar en el diseño de la app, ya sea en la parte superior o inferior de la pantalla. Permanecen en la pantalla mientras los usuarios interactúan con la app y se pueden actualizar automáticamente después de un período determinado. Si la publicidad para dispositivos móviles es la primera vez que los usas, es un excelente punto de partida. Caso de éxito.
En esta guía, se muestra cómo integrar anuncios de banner deAdMob en una app para Android. Además de instrucciones y fragmentos de código, también se incluye información sobre el tamaño adecuado de banners y vínculos a recursos adicionales.
Requisitos previos
- Completar la Guía de introducción
Agregar AdView al diseño
El primer paso para mostrar un banner es colocar AdView
en el diseño de la Activity
o el Fragment
en el que deseas mostrarlo. La manera más fácil de hacerlo es agregar una al archivo de diseño XML correspondiente. A continuación, se incluye un ejemplo que muestra la AdView
de una actividad:
# main_activity.xml
<com.google.android.gms.ads.AdView
xmlns:ads="http://schemas.android.com/apk/res-auto"
android:id="@+id/adView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_alignParentBottom="true"
ads:adSize="BANNER"
ads:adUnitId="ca-app-pub-3940256099942544/6300978111">
</com.google.android.gms.ads.AdView>
Ten en cuenta los siguientes atributos obligatorios:
ads:adSize
: Establece esto en el tamaño del anuncio que deseas utilizar. Si no quieres usar el tamaño estándar definido por la constante, puedes configurar un tamaño personalizado en su lugar. Consulta la sección sobre el tamaño del banner para obtener más información.ads:adUnitId
: Establece esto en el identificador único asignado a la unidad de anuncios en tu app donde se mostrarán los anuncios. Si muestras anuncios de banner en diferentes actividades, cada uno requerirá una unidad de anuncios.
Como alternativa, puedes crear AdView
de manera programática:
Java
AdView adView = new AdView(this);
adView.setAdSize(AdSize.BANNER);
adView.setAdUnitId("ca-app-pub-3940256099942544/6300978111");
// TODO: Add adView to your view hierarchy.
Kotlin
val adView = AdView(this)
adView.adSize = AdSize.BANNER
adView.adUnitId = "ca-app-pub-3940256099942544/6300978111"
// TODO: Add adView to your view hierarchy.
Realice pruebas siempre con anuncios de prueba
Cuando compiles y pruebes tus apps, asegúrate de usar anuncios de prueba en lugar de anuncios de producción publicados. De lo contrario, podría suspenderse tu cuenta.
La forma más fácil de cargar anuncios de prueba es usar nuestro ID de unidades de anuncios de prueba dedicado para banners de Android:
ca-app-pub-3940256099942544/6300978111
Se configuró específicamente para mostrar anuncios de prueba en cada solicitud, y puedes usarlo en tus propias apps mientras codificas, pruebas y depuras. Asegúrate de reemplazarla con tu propio ID de unidad de anuncios antes de publicar la app.
Para obtener más información sobre cómo funcionan los anuncios de prueba del SDK de Mobile Ads, consulta Anuncios de prueba.
Carga un anuncio
Una vez que se implementa AdView , el siguiente paso es cargar un anuncio. Para ello, se usa el método loadAd()
en la clase AdView
. Lleva un parámetro AdRequest
, que contiene información del entorno de ejecución, como la información de segmentación, sobre una sola solicitud de anuncio.
A continuación, se incluye un ejemplo que muestra cómo cargar un anuncio en el método onCreate()
de una Activity
:
MainActivity (extracto)
Java
package ...
import ...
import com.google.android.gms.ads.AdRequest;
import com.google.android.gms.ads.AdView;
public class MainActivity extends AppCompatActivity {
private AdView mAdView;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
MobileAds.initialize(this, new OnInitializationCompleteListener() {
@Override
public void onInitializationComplete(InitializationStatus initializationStatus) {
}
});
mAdView = findViewById(R.id.adView);
AdRequest adRequest = new AdRequest.Builder().build();
mAdView.loadAd(adRequest);
}
}
Kotlin
package ...
import ...
import com.google.android.gms.ads.AdRequest
import com.google.android.gms.ads.AdView
class MainActivity : AppCompatActivity() {
lateinit var mAdView : AdView
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
MobileAds.initialize(this) {}
mAdView = findViewById(R.id.adView)
val adRequest = AdRequest.Builder().build()
mAdView.loadAd(adRequest)
}
}
Si tu anuncio no se carga, no necesitas solicitar otro de forma explícita, siempre y cuando hayas configurado tu unidad de anuncios para que se actualice. El SDK de Google Mobile Ads respeta cualquier frecuencia de actualización que hayas especificado en la interfaz webAdMob . Si no has habilitado la actualización, deberás emitir una solicitud nueva.
Listo. Tu app ya está lista para mostrar anuncios de banner.
Eventos de anuncios
Para personalizar aún más el comportamiento de tu anuncio, puedes conectarte a una serie de eventos en el ciclo de vida del anuncio: cargar, abrir, cerrar, etcétera. Puedes escuchar estos eventos con la clase AdListener
.
Para usar un AdListener
con AdView
, llama al método setAdListener()
:
Java
mAdView.setAdListener(new AdListener() {
@Override
public void onAdClicked() {
// Code to be executed when the user clicks on an ad.
}
@Override
public void onAdClosed() {
// Code to be executed when the user is about to return
// to the app after tapping on an ad.
}
@Override
public void onAdFailedToLoad(LoadAdError adError) {
// Code to be executed when an ad request fails.
}
@Override
public void onAdImpression() {
// Code to be executed when an impression is recorded
// for an ad.
}
@Override
public void onAdLoaded() {
// Code to be executed when an ad finishes loading.
}
@Override
public void onAdOpened() {
// Code to be executed when an ad opens an overlay that
// covers the screen.
}
});
Kotlin
mAdView.adListener = object: AdListener() {
override fun onAdClicked() {
// Code to be executed when the user clicks on an ad.
}
override fun onAdClosed() {
// Code to be executed when the user is about to return
// to the app after tapping on an ad.
}
override fun onAdFailedToLoad(adError : LoadAdError) {
// Code to be executed when an ad request fails.
}
override fun onAdImpression() {
// Code to be executed when an impression is recorded
// for an ad.
}
override fun onAdLoaded() {
// Code to be executed when an ad finishes loading.
}
override fun onAdOpened() {
// Code to be executed when an ad opens an overlay that
// covers the screen.
}
}
Cada uno de los métodos anulables en AdListener
corresponde a un evento en el ciclo de vida de un anuncio.
Métodos anulables | |
---|---|
onAdClicked() |
Se invoca al método onAdClicked() cuando se registra un clic para un anuncio.
|
onAdClosed() |
Se invoca al método onAdClosed() cuando un usuario regresa a la app después de ver la URL de destino de un anuncio. Tu app puede usarla para reanudar actividades suspendidas o realizar cualquier otro trabajo necesario a fin de prepararse para la interacción.
Consulta el ejemplo de AdMob AdListener para ver una implementación de los métodos de los objetos de escucha de anuncios en la app Android API Demo.
|
onAdFailedToLoad() |
El método onAdFailedToLoad() es el único que incluye un parámetro. El parámetro de error de tipo LoadAdError describe qué error ocurrió. Para obtener más información, consulta la documentación de depuración de errores de carga de anuncios.
|
onAdImpression() |
Se invoca al método onAdImpression() cuando se registra una impresión para un anuncio.
|
onAdLoaded() |
El método onAdLoaded() se ejecuta cuando termina de cargarse un anuncio. Si deseas retrasar la adición de AdView a tu actividad o fragmento hasta que estés seguro de que, por ejemplo, se cargará un anuncio, puedes hacerlo aquí.
|
onAdOpened() |
Se invoca al método onAdOpened() cuando un anuncio abre una superposición que cubre la pantalla.
|
Tamaños de banner
El tamaño del contenedor en el que coloca su anuncio debe ser al menos tan grande como el banner. Si tu contenedor tiene padding, eso disminuye de forma efectiva el tamaño del contenedor. En caso de que el contenedor no pueda adaptarse al anuncio en forma de banner, este no aparecerá y se mostrará la siguiente advertencia en los registros:
W/Ads: Not enough space to show ad. Needs 320x50 dp, but only has 288x495 dp.
En la siguiente tabla, se enumeran los tamaños de banner estándar.
Tamaño en dp (ancho x alto) | Descripción | Disponibilidad | Constante de AdSize |
---|---|---|---|
320 x 50 | Banner | Teléfonos y tablets | BANNER |
320 x 100 | Banner grande | Teléfonos y tablets | LARGE_BANNER |
300 x 250 | Rectángulo mediano de IAB | Teléfonos y tablets | MEDIUM_RECTANGLE |
468 x 60 | Banner de tamaño completo de IAB | Tablets | FULL_BANNER |
728 x 90 | Tabla de clasificación de IAB | Tablets | LEADERBOARD |
Ancho proporcionado × Altura adaptable | Banner adaptable | Teléfonos y tablets | N/A |
Ancho de pantalla x 32|50|90 | Banner inteligente | Teléfonos y tablets | SMART_BANNER |
Para definir un tamaño de banner personalizado, establece tu AdSize
deseado de la siguiente manera:
Java
AdSize adSize = new AdSize(300, 50);
Kotlin
val adSize = AdSize(300, 50)
Aceleración de hardware para anuncios de video
Para que los anuncios de video se muestren correctamente en las vistas de tus anuncios en forma de banner, debes habilitar la aceleración de hardware.
La aceleración de hardware está habilitada de forma predeterminada, pero algunas apps pueden inhabilitarla. Si este es el caso de tu app, te recomendamos que habilites la aceleración de hardware para las clases de Activity
que usan anuncios.
Cómo habilitar la aceleración de hardware
Si tu app no se comporta correctamente con la aceleración de hardware activada de manera global, también puedes controlarla en actividades individuales. A fin de habilitar o inhabilitar la aceleración de hardware, puedes usar el atributo android:hardwareAccelerated
para los elementos <application>
y <activity>
en tu AndroidManifest.xml
. En el siguiente ejemplo, se habilita la aceleración de hardware para toda la app, pero se inhabilita para una actividad:
<application android:hardwareAccelerated="true">
<!-- For activities that use ads, hardwareAcceleration should be true. -->
<activity android:hardwareAccelerated="true" />
<!-- For activities that don't use ads, hardwareAcceleration can be false. -->
<activity android:hardwareAccelerated="false" />
</application>
Consulta la guía de aceleración de hardware a fin de obtener más información sobre las opciones para controlar la aceleración de hardware. Ten en cuenta que las vistas de anuncios individuales no pueden habilitarse para la aceleración de hardware si la actividad está inhabilitada, por lo que la actividad misma debe tener habilitada la aceleración de hardware.
Recursos adicionales
Ejemplos en GitHub
App de ejemplo de RecyclerView de banner: Java
Video instructivo sobre Mobile Ads Garage
Historias de éxito
Próximos pasos
Explora los siguientes temas: