Anuncios de banner

Organízate con las colecciones Guarda y clasifica el contenido según tus preferencias.

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

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.

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

  • Demostración de funciones avanzadas: Java | Kotlin

  • Aplicación de ejemplo de RecyclerView para anuncios de banner: Java

Tutoriales en vídeo de la serie Mobile Ads Garage

Casos de éxito