Los anuncios de banner ocupan un espacio determinado en la interfaz de una aplicación, ya sea en la parte superior de la pantalla del dispositivo o en la inferior. Permanecen en la pantalla mientras los usuarios interactúan con la aplicación, y pueden actualizarse automáticamente después de un periodo de tiempo determinado. Si es la primera vez que utilizas la publicidad para móviles, estos anuncios son un excelente punto de partida. Caso de éxito
En esta guía descubrirás cómo integrar anuncios de banner de AdMob en aplicaciones Android. Además de fragmentos de código e instrucciones, encontrarás información sobre cómo definir un tamaño adecuado para los banners y enlaces a otros recursos.
Requisitos previos
- Hacer todo lo que se indica en la guía de introducción.
Añadir el objeto AdView a un diseño
El primer paso para mostrar un banner es incorporar el objeto AdView
en el diseño de Activity
o de Fragment
en el que quieras que aparezca. La forma más sencilla de hacerlo es añadirlo al archivo XML del diseño correspondiente. Aquí tienes un ejemplo donde se muestra AdView
incluido en 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 que los siguientes atributos son obligatorios:
ads:adSize
: especifica el tamaño de anuncio que quieras usar. Si no quieres usar el tamaño estándar definido por la constante, define un tamaño personalizado. Consulta la sección sobre tamaños de banner más abajo para obtener más información.ads:adUnitId
: introduce el identificador único asignado al bloque de anuncios de tu aplicación en el que se deben mostrar los anuncios. Si muestras anuncios de banner en distintas actividades, hará falta un bloque de anuncios para cada una de ellas.
También tienes la opción de crear el objeto AdView
de forma 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.
Comprobar siempre las aplicaciones con anuncios de prueba
Cuando crees y pruebes tus aplicaciones, utiliza siempre anuncios de prueba en lugar de anuncios reales que se estén publicando. De lo contrario, podríamos suspender tu cuenta.
Para cargar anuncios de prueba, lo más sencillo es usar el ID exclusivo de nuestro bloque de anuncios de prueba para banners de Android:
ca-app-pub-3940256099942544/6300978111
Lo hemos configurado especialmente para que devuelva anuncios de prueba en cada solicitud, y puedes usarlo mientras programas, evalúas y depuras tus propias aplicaciones. Recuerda que debes sustituirlo por el ID de tu bloque de anuncios antes de publicar la aplicación.
Para obtener más información, consulta cómo funcionan los anuncios de prueba del SDK de anuncios para móviles.
Cargar un anuncio
Una vez que hayas configurado el objeto AdView, el siguiente paso es cargar un anuncio. Para ello, se utiliza el método loadAd()
en la clase AdView
. Dicho método recibe un parámetro AdRequest
, que contiene información sobre el tiempo de ejecución de una solicitud de anuncio aislada (por ejemplo, datos sobre la segmentación).
En este ejemplo se muestra cómo cargar un anuncio mediante el método onCreate()
de un objeto Activity
:
MainActivity (fragmento)
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) } }
Eso es todo. La aplicación ya está lista para mostrar anuncios de banner.
Eventos de anuncios
Para personalizar aún más el comportamiento de tus anuncios, puedes añadir varios eventos a su ciclo de vida: carga, apertura, cierre, etc. Para procesar estos eventos, usa la clase AdListener
.
Para usar la clase AdListener
con un objeto AdView
, tienes que llamar 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 de AdListener
se corresponde con un evento del ciclo de vida de un anuncio.
Métodos anulables | |
---|---|
onAdClicked()
|
El método onAdClicked() se invoca cuando se registra un clic en un anuncio.
|
onAdClosed()
|
El método onAdClosed() se invoca cuando un usuario vuelve a la aplicación después de ver la URL de destino de un anuncio.
La aplicación puede utilizarlo para reanudar las actividades suspendidas o hacer cualquier otra tarea necesaria para prepararse para la interacción.
Consulta el ejemplo de AdListener de AdMob para ver cómo se implementan los métodos del procesador de anuncios en la aplicación API Demo de Android.
|
onAdFailedToLoad()
|
El método onAdFailedToLoad() es el único que incluye un parámetro. El parámetro de tipo LoadAdError describe qué error se ha producido. Si quieres obtener más información, consulta la documentación sobre cómo depurar errores de carga de anuncios.
|
onAdImpression()
|
El método onAdImpression() se invoca cuando se registra una impresión en un anuncio.
|
onAdLoaded()
|
El método onAdLoaded() se ejecuta cuando el anuncio termina de cargarse. Esto te sirve, por ejemplo, si quieres que el objeto AdView no se añada a tu actividad o fragmento hasta que sepas con seguridad que se cargará un anuncio.
|
onAdOpened()
|
El método onAdOpened() se invoca cuando un anuncio abre una superposición que cubre la pantalla.
|
Tamaños de banner
En esta tabla se muestran los tamaños de banner estándar:
Tamaño en dp (anchura x altura) | Descripción | Disponibilidad | Constante AdSize |
---|---|---|---|
320x50 | Banner | Teléfonos y tablets | BANNER |
320x100 | Banner grande | Teléfonos y tablets | LARGE_BANNER |
300x250 | Rectángulo mediano de IAB | Teléfonos y tablets | MEDIUM_RECTANGLE |
468x60 | Banner de tamaño completo de IAB | Tablets | FULL_BANNER |
728x90 | Leaderboard de IAB | Tablets | LEADERBOARD |
Anchura proporcionada x Altura adaptativa | Banner adaptativo | Teléfonos y tablets | N/A |
Anchura de pantalla x 32|50|90 | Banner inteligente | Teléfonos y tablets | SMART_BANNER |
Consulta más información sobre los banners adaptativos, que sustituirán a los banners inteligentes. |
Para definir un tamaño de banner personalizado, utiliza la clase AdSize
, tal como se muestra a continuación:
Java
AdSize adSize = new AdSize(300, 50);
Kotlin
val adSize = AdSize(300, 50)
Aceleración por hardware para anuncios de vídeo
Para que los anuncios de vídeo se muestren correctamente en las visualizaciones de anuncios de banner, es necesario habilitar la aceleración por hardware.
La aceleración por hardware está habilitada de forma predeterminada, pero algunas aplicaciones pueden inhabilitarla. Si es el caso de tu aplicación, te recomendamos que habilites la aceleración por hardware en las clases Activity que utilicen anuncios.
Habilitar la aceleración por hardware
Si tu aplicación no funciona correctamente cuando habilitas la aceleración por hardware, puedes activar esta función solo en actividades concretas. Para habilitar o inhabilitar la aceleración por hardware, puedes usar el atributo android:hardwareAccelerated
en los elementos <application>
y <activity>
de tu archivo AndroidManifest.xml
. En el siguiente ejemplo se habilita la aceleración por hardware en toda la aplicación, pero se desactiva en una actividad concreta:
<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 por hardware para ver las opciones de control de este mecanismo. No se puede usar la aceleración por hardware en las visualizaciones de anuncios individuales si la clase Activity la tiene inhabilitada, por lo que hay que habilitar la aceleración en esa clase.
Otros recursos
Ejemplos en GitHub
Ejemplo de implementación mínima de anuncios de banner: Java | Kotlin
Aplicación de ejemplo de RecyclerView para anuncios de banner: Java