Anuncios en forma de banner

Los anuncios de banner son anuncios rectangulares que ocupan una parte del diseño de una aplicación. Ellas permanecerá en la pantalla mientras los usuarios interactúan con la aplicación, ya sea anclados en la en la parte superior o inferior de la pantalla, o bien intercalados con el contenido a medida que el usuario se desplaza. Banner los anuncios pueden actualizarse automáticamente después de un período determinado. Consulta la Descripción general de los anuncios de banner. para obtener más información.

En esta guía, se muestra cómo comenzar a usar las campañas anuncios de banner adaptable, lo que maximiza el rendimiento mediante la optimización del tamaño del anuncio para cada dispositivo mediante el ancho de anuncio que especifiques.

Los anuncios de banner adaptable fijos son anuncios con relación de aspecto fija, no los anuncios anuncios de tamaño fijo. La relación de aspecto es similar al estándar de la industria de 320 x 50. Una vez especificas el ancho completo disponible, te mostrará un anuncio con una altura para ese ancho. La altura óptima no cambia entre las solicitudes de mismo dispositivo y no es necesario mover las vistas circundantes cuando el anuncio actualizaciones de software.

Requisitos previos

Probar siempre con anuncios de prueba

Cuando compiles y pruebes tus apps, asegúrate de usar anuncios de prueba en lugar de anuncios activos y en producción. De lo contrario, podría suspenderse tu cuenta.

La forma más sencilla de cargar anuncios de prueba es usar nuestro ID exclusivo de unidad de anuncios de prueba para Banners para Android:

/6499/example/adaptive-banner

Se configuró de forma especial para mostrar anuncios de prueba para cada solicitud. utilízalos en tus propias apps mientras programas, pruebas y depuras. Solo asegúrate de reemplázala con tu propio ID de unidad de anuncios antes de publicar tu app.

Para obtener más información sobre cómo funcionan los anuncios de prueba del SDK de anuncios para dispositivos móviles, consulta el artículo Anuncios.

Cómo agregar AdManagerAdView al diseño

El primer paso para mostrar un banner es colocar AdManagerAdView. en el diseño de la Activity o Fragment en la que quieras mostrar de la siguiente manera:

Java

private AdSize getAdSize() {
  // Determine the screen width (less decorations) to use for the ad width.
  Display display = getWindowManager().getDefaultDisplay();
  DisplayMetrics outMetrics = new DisplayMetrics();
  display.getMetrics(outMetrics);

  float density = outMetrics.density;

  float adWidthPixels = adContainerView.getWidth();

  // If the ad hasn't been laid out, default to the full screen width.
  if (adWidthPixels == 0) {
    adWidthPixels = outMetrics.widthPixels;
  }

  int adWidth = (int) (adWidthPixels / density);
  return AdSize.getCurrentOrientationAnchoredAdaptiveBannerAdSize(this, adWidth);
}

private void loadBanner() {
  
  // Create a new ad view.
  AdManagerAdView adView = new AdManagerAdView(this);
  adView.setAdSizes(getAdSize());
  adView.setAdUnitId("/6499/example/adaptive-banner");

  // Replace ad container with new ad view.
  adContainerView.removeAllViews();
  adContainerView.addView(adView);

  // Start loading the ad in the background.
  AdManagerAdRequest adRequest = new AdManagerAdRequest.Builder().build();
  adView.loadAd(adRequest);
}

Kotlin


// Determine the screen width (less decorations) to use for the ad width.
// If the ad hasn't been laid out, default to the full screen width.
private val adSize: AdSize
  get() {
    val display = windowManager.defaultDisplay
    val outMetrics = DisplayMetrics()
    display.getMetrics(outMetrics)

    val density = outMetrics.density

    var adWidthPixels = binding.adViewContainer.width.toFloat()
    if (adWidthPixels == 0f) {
      adWidthPixels = outMetrics.widthPixels.toFloat()
    }

    val adWidth = (adWidthPixels / density).toInt()
    return AdSize.getCurrentOrientationAnchoredAdaptiveBannerAdSize(this, adWidth)
  }

private fun loadBanner() {
  
  // Create a new ad view.
  val adView = AdManagerAdView(this)
  adView.adSizes = adSize
  adView.adUnitId = "/6499/example/adaptive-banner"

  // Create an ad request.
  val adRequest = AdManagerAdRequest.Builder().build()

  // Start loading the ad in the background.
  adView.loadAd(adRequest)
}

Carga un anuncio

Una vez que se implementa la vista de AdManagerAdView, cargar un anuncio. Esto puede hacerse con loadAd(). en la clase AdManagerAdView. Se necesita un AdManagerAdRequest parámetro, que contiene información del entorno de ejecución, como la de orientación, sobre un en una única solicitud de anuncio.

A continuación, te mostramos un ejemplo de cómo cargar un anuncio en el método onCreate() de una Activity:

Java

private void loadBanner() {
  // Create a new ad view.
  adView = new AdManagerAdView(this);
  adView.setAdUnitId(AD_UNIT);
  adView.setAdSize(getAdSize());
  
  // Replace ad container with new ad view.
  adContainerView.removeAllViews();
  adContainerView.addView(adView);

  // Start loading the ad in the background.
  AdManagerAdRequest adRequest = new AdManagerAdRequest.Builder().build();
  adView.loadAd(adRequest);
}

Kotlin

private fun loadBanner() {
  // This is an ad unit ID for a test ad. Replace with your own banner ad unit ID.
  adView.adUnitId = "/6499/example/banner"
  adView.setAdSize(adSize)
  
  // Create an ad request.
  val adRequest = AdManagerAdRequest.Builder().build()

  // Start loading the ad in the background.
  adView.loadAd(adRequest)
}

Si tu anuncio no se carga, no necesitas solicitar otro explícitamente, ya que (siempre y cuando configures tu unidad de anuncios para que se actualice) SDK de anuncios de Google para dispositivos móviles respetará cualquier frecuencia de actualización que hayas especificado en el archivo interfaz web. Si no habilitaste la actualización, deberás enviar una nueva para cada solicitud.

Eso es todo. Tu app ya está lista para mostrar anuncios de banner.

Eventos de anuncios

Puede detectar eventos en el ciclo de vida del anuncio, como la carga, la impresión y el clic en el anuncio, así como los eventos de apertura y cierre de anuncios. Se recomienda para configurar la devolución de llamada antes de cargar el banner.

Java

AdManagerAdView.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

AdManagerAdView.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 reemplazables de AdListener corresponde a un evento en el ciclo de vida de un anuncio.

Métodos anulables
onAdClicked() La onAdClicked() cuando se registra un clic para un anuncio.
onAdClosed() La onAdClosed() cuando un usuario regresa a la app después de ver la transmisión de un anuncio URL de destino. Tu app puede usarla para reanudar actividades suspendidas realizar cualquier otro trabajo necesario para prepararse para la interacción.
onAdFailedToLoad() La 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 el artículo Cómo depurar errores en la carga de anuncios documentación.
onAdImpression() La onAdImpression() cuando se registra una impresión de un anuncio.
onAdLoaded() La onAdLoaded() se ejecuta cuando termina de cargarse un anuncio. Si quieres retrasar agregando la AdManagerAdView a tu actividad o fragmento hasta que te asegures de que se cargará un anuncio, por ejemplo, puedes hacerlo aquí.
onAdOpened() La onAdOpened() cuando un anuncio abre una superposición que cubre la pantalla.

Aceleración de hardware para anuncios de video

Para que los anuncios de video aparezcan correctamente en las vistas de anuncios de banner, el hardware aceleración debe habilitarse.

La aceleración de hardware está habilitada de forma predeterminada, pero algunas apps pueden optar por inhabilitarla que la modifica. Si esto se aplica a tu app, te recomendamos que habilites la aceleración de hardware para Activity clases que usan anuncios.

Cómo habilitar la aceleración de hardware

Si la aceleración de hardware no se comporta correctamente tu app globalmente, también puedes controlarlo para actividades individuales. Para habilitar o inhabilitar la aceleración de hardware, puedes usar android:hardwareAccelerated para el <application> y <activity> elementos en tu AndroidManifest.xml. El siguiente ejemplo habilita el hardware aceleración para toda la app, pero la 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 el artículo Aceleración de hardware. guía para 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 en sí debe tener habilitada la aceleración de hardware.

Recuento manual de impresiones

El recuento manual de impresiones solo es compatible con productos propios y de venta directa. campañas con creatividades cuyo tráfico se coordinó directamente en Ad Manager. No debería ser usarse para reabastecimiento o anuncios de redes de terceros. Para obtener más detalles, consulta Recuentos impresiones y clics.

Puedes enviar pings de impresiones manualmente a Ad Manager si tienes solicitudes condiciones respecto de cuándo se debe registrar una impresión. Para hacerlo, habilita un AdManagerAdRequest para las impresiones manuales antes de cargar un anuncio:

Java

AdManagerAdRequest adRequest = new AdManagerAdRequest.Builder()
    .setManualImpressionsEnabled(true)
    .build();

Kotlin

val adRequest = AdManagerAdRequest.Builder()
    .setManualImpressionsEnabled(true)
    .build()

Cuando determinas que un anuncio se devolvió correctamente y se muestra en pantalla puedes registrar una impresión de forma manual:

Java

{ ad_view }.recordManualImpression();

Kotlin

AdManagerAdView.recordManualImpression()

Eventos de aplicaciones

Los eventos de aplicaciones le permiten crear anuncios que pueden enviar mensajes a su código de aplicación. La app puede tomar medidas en función de estos mensajes.

Puedes escuchar eventos de apps específicos de Ad Manager con AppEventListener. Estos eventos pueden ocurrir en cualquier momento del ciclo de vida del anuncio, incluso antes de Se llama a onAdLoaded().

Java

public interface AppEventListener {
  void onAppEvent(String name, String info);
}

Kotlin

interface AppEventListener {
    fun onAppEvent(name: String, info: String)
}

Se llama a void onAppEvent(String name, String info) cuando ocurre un evento en la app. en un anuncio. Esta interfaz se puede implementar a través de tu actividad o cualquier otro objeto:

Java

import com.google.android.gms.ads.admanager.*;

public class BannerExample extends Activity implements AppEventListener {
}

Kotlin

import com.google.android.gms.ads.admanager.*

class BannerExample : Activity(), AppEventListener {
}

y, luego, se pasa a AdManagerAdView:

Java

AdManagerAdView.setAppEventListener(this);

Kotlin

AdManagerAdView.appEventListener = this

En este ejemplo, se muestra cómo cambiar el color de fondo de tu app según un evento de la aplicación con nombre de color:

Java

@Override
public void onAppEvent(String name, String info) {
  if ("color".equals(name)) {
    if ("green".equals(info)) {
      // Set background color to green.
    } else if ("blue".equals(info)) {
      // Set background color to blue.
    } else {
      // Set background color to black.
    }
  }
}

Kotlin

override fun onAppEvent(name: String?, info: String?) {
    if (name == "color") {
        when (info) {
            "green" -> {
                // Set background color to green.
            }
            "blue" -> {
                // Set background color to blue.
            }
            else -> {
                // Set background color to black.
            }
        }
    }
}

Y esta es la creatividad correspondiente que envía mensajes de eventos de la aplicación en color a el objeto de escucha:

<html>
<head>
  <script src="//www.gstatic.com/afma/api/v1/google_mobile_app_ads.js"></script>
  <script>
    document.addEventListener("DOMContentLoaded", function() {
      // Send a color=green event when ad loads.
      admob.events.dispatchAppEvent("color", "green");

      document.getElementById("ad").addEventListener("click", function() {
        // Send a color=blue event when ad is clicked.
        admob.events.dispatchAppEvent("color", "blue");
      });
    });
  </script>
  <style>
    #ad {
      width: 320px;
      height: 50px;
      top: 0px;
      left: 0px;
      font-size: 24pt;
      font-weight: bold;
      position: absolute;
      background: black;
      color: white;
      text-align: center;
    }
  </style>
</head>
<body>
  <div id="ad">Carpe diem!</div>
</body>
</html>

Consulta el ejemplo de eventos de aplicaciones de Ad Manager para ver una implementación de eventos de aplicaciones en la App de demostración de API.

Java Kotlin

Recursos adicionales

Ejemplos en GitHub

  • Ejemplo de anuncios de banner adaptable fijos: Java | Kotlin
  • Demostración de las funciones avanzadas: Java | Kotlin

Próximos pasos

Banners contraíbles

Los anuncios de banner contraíbles son anuncios de banner que inicialmente se presentan como un anuncio superpuesto, con un botón para contraer el anuncio a un tamaño más pequeño. Considera usarla para optimizar aún más el rendimiento. Consulta el artículo sobre anuncios de banner contraíbles para obtener más información.

Banners adaptables intercalados

Los banners adaptables intercalados son banners más grandes y más altos en comparación con los banners adaptables fijos. banners. Son de altura variable y pueden ser tan altas como la pantalla del dispositivo. Se recomienda el uso de banners adaptables intercalados en lugar de anuncios de banner adaptable fijos Apps que colocan anuncios de banner en contenido por el que es posible desplazarse. Consulta el ajuste adaptable intercalado banners para obtener más información más detalles.

Explora otros temas