Anuncios de banner

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, 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 nuestro ID del bloque de anuncios para banners de Android:

ca-app-pub-3940256099942544/6300978111

Lo hemos configurado especialmente para devolver anuncios de prueba a cada solicitud; puedes usarlo para programar, probar y depurar tus propias aplicaciones. Solo tienes que sustituirlo por el ID de uno de tus bloques de anuncios antes de publicar la aplicación.

Para obtener más información sobre cómo funcionan los anuncios de prueba del SDK de anuncios para móviles, consulta la guía Anuncios de prueba.

Cargar anuncios

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 anuncio

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, solo tienes que llamar al método setAdListener():

Java

mAdView.setAdListener(new AdListener() {
    @Override
    public void onAdLoaded() {
        // Code to be executed when an ad finishes loading.
    }

    @Override
    public void onAdFailedToLoad(LoadAdError adError) {
        // Code to be executed when an ad request fails.
    }

    @Override
    public void onAdOpened() {
        // Code to be executed when an ad opens an overlay that
        // covers the screen.
    }

    @Override
    public void onAdClicked() {
        // Code to be executed when the user clicks on an ad.
    }

    @Override
    public void onAdLeftApplication() {
        // Code to be executed when the user has left the app.
    }

    @Override
    public void onAdClosed() {
        // Code to be executed when the user is about to return
        // to the app after tapping on an ad.
    }
});

Kotlin

mAdView.adListener = object: AdListener() {
    override fun onAdLoaded() {
        // Code to be executed when an ad finishes loading.
    }

    override fun onAdFailedToLoad(adError : LoadAdError) {
        // Code to be executed when an ad request fails.
    }

    override fun onAdOpened() {
        // Code to be executed when an ad opens an overlay that
        // covers the screen.
    }

    override fun onAdClicked() {
        // Code to be executed when the user clicks on an ad.
    }

    override fun onAdLeftApplication() {
        // Code to be executed when the user has left the app.
    }

    override fun onAdClosed() {
        // Code to be executed when the user is about to return
        // to the app after tapping on an ad.
    }
}

Cada uno de los métodos anulables de AdListener se corresponde con un evento del ciclo de vida de un anuncio.

Métodos anulables
onAdLoaded() El método onAdLoaded() se ejecuta cuando el anuncio termina de cargarse. Por ejemplo, te sirve 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.
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.
onAdOpened() Este método se invoca cuando el usuario toca un anuncio.
onAdLeftApplication() Este método se invoca después de onAdOpened(), cuando un usuario hace clic y abre otra aplicación (como Google Play), y deja en segundo plano la aplicación actual.
onAdClosed() Cuando un usuario regresa a la aplicación después de ver la URL de destino de un anuncio, se invoca este método. 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.

En esta tabla se muestran los tamaños de banner estándar:

Tamaño en dp (anchura x altura) Descripción Disponibilidad Constante de 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/D
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 este mecanismo solo en actividades concretas. Para habilitarlo o inhabilitarlo, 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 dicha 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