Anuncios de banner

Los anuncios de banner son anuncios rectangulares de imagen o de texto que ocupan un punto determinado en la pantalla. Permanecen en ella 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 Unity. Además de fragmentos de código e instrucciones, encontrarás información sobre cómo definir el tamaño adecuado para los banners y enlaces a otros recursos.

Requisitos previos

Completa la guía Primeros pasos. Tu aplicación Unity ya debería tener importado el complemento para Unity de anuncios de Google para móviles.

Crear un objeto BannerView

El primer paso para mostrar un banner es crear un objeto BannerView en una secuencia de comandos de C# adjunta a un elemento GameObject.

using System;
using UnityEngine;
using GoogleMobileAds.Api;
...
public class GoogleMobileAdsDemoScript : MonoBehaviour
{
    private BannerView bannerView;
    ...
    public void Start()
    {
        #if UNITY_ANDROID
            string appId = "ca-app-pub-3940256099942544~3347511713";
        #elif UNITY_IPHONE
            string appId = "ca-app-pub-3940256099942544~1458002511";
        #else
            string appId = "unexpected_platform";
        #endif

        // Initialize the Google Mobile Ads SDK.
        MobileAds.Initialize(appId);

        this.RequestBanner();
    }

    private void RequestBanner()
    {
        #if UNITY_ANDROID
            string adUnitId = "ca-app-pub-3940256099942544/6300978111";
        #elif UNITY_IPHONE
            string adUnitId = "ca-app-pub-3940256099942544/2934735716";
        #else
            string adUnitId = "unexpected_platform";
        #endif

        // Create a 320x50 banner at the top of the screen.
        this.bannerView = new BannerView(adUnitId, AdSize.Banner, AdPosition.Top);
    }
}

El constructor de objetos BannerView tiene los siguientes parámetros:

  • adUnitId: el ID del bloque de anuncios de AdMob desde el que el objeto BannerView debe cargar los anuncios.
  • AdSize: el tamaño de anuncio de AdMob que quieres usar (consulta la sección Tamaños de banner para obtener más información).
  • AdPosition: la posición en la que se debe colocar el anuncio de banner. La enumeración AdPosition indica los valores de posición válidos para los anuncios.

Es importante tener en cuenta cómo hay que utilizar los diferentes bloques de anuncios en función de la plataforma en la que se muestran. Debes utilizar un bloque de anuncios de iOS para hacer solicitudes de anuncios en iOS y un bloque de anuncios de Android para hacerlas en Android.

(Opcional) Posicionamiento de anuncios personalizados

Para tener más control del que ofrecen los valores AdPosition a la hora de especificar dónde se sitúa un elemento BannerView en la pantalla, utiliza el constructor BannerView, que usa las coordenadas x- e y- como parámetros:

// Create a 320x50 banner ad at coordinate (0,50) on screen.
BannerView bannerView = new BannerView(adUnitId, AdSize.Banner, 0, 50);

La esquina superior izquierda del elemento BannerView se situará en los valores x e y enviados al constructor, mientras que el origen será la esquina superior izquierda de la pantalla.

(Opcional) Tamaños de anuncios personalizados

Además de usar una constante AdSize, también puedes especificar un tamaño de anuncio personalizado:

AdSize adSize = new AdSize(250, 250);
BannerView bannerView = new BannerView(adUnitId, adSize, AdPosition.Bottom);

Comprueba siempre las aplicaciones con anuncios de prueba

El código de ejemplo de arriba contiene un ID de bloque que puedes usar libremente para solicitar anuncios. Está especialmente configurado para devolver anuncios de prueba en vez de anuncios de producción, por lo que es seguro utilizarlo.

Sin embargo, después de registrar una aplicación en la interfaz de AdMob y crear tus propios ID de bloque de anuncios para usarlos en dicha aplicación, tendrás que configurar tu dispositivo como un dispositivo de prueba durante la fase de desarrollo. Esto es extremadamente importante, ya que las pruebas con anuncios reales (aunque nunca los toques) infringen la política de AdMob y pueden provocar la suspensión de tu cuenta. Consulta la guía Anuncios de prueba para descubrir cómo asegurarte de contar siempre con anuncios de prueba durante la fase de desarrollo.

Cargar anuncios

Después de instanciar BannerView, lo siguiente que debes hacer es cargar un anuncio. Para ello, se utiliza el método loadAd() en la clase BannerView. Recibe un argumento AdRequest, que contiene información sobre el tiempo en ejecución de una solicitud de anuncio aislada (por ejemplo, información sobre la segmentación).

En el siguiente ejemplo se muestra cómo cargar un anuncio:

...
    private void RequestBanner()
    {
        #if UNITY_ANDROID
            string adUnitId = "ca-app-pub-3940256099942544/6300978111";
        #elif UNITY_IPHONE
            string adUnitId = "ca-app-pub-3940256099942544/2934735716";
        #else
            string adUnitId = "unexpected_platform";
        #endif

        // Create a 320x50 banner at the top of the screen.
        this.bannerView = new BannerView(adUnitId, AdSize.Banner, AdPosition.Top);

        // Create an empty ad request.
        AdRequest request = new AdRequest.Builder().Build();

        // Load the banner with the request.
        this.bannerView.LoadAd(request);
    }
...

Eso es todo. Tu aplicación ya está lista para mostrar anuncios de banner de AdMob.

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 escuchar estos eventos, registra un delegado correspondiente al EventHandler adecuado, tal como se muestra en este ejemplo.

...
using System;
using UnityEngine;
using GoogleMobileAds.Api;
...
public class GoogleMobileAdsDemoScript : MonoBehaviour
{
    private BannerView bannerView;

    public void Start()
    {
        this.RequestBanner();
    }

    private void RequestBanner()
    {

        #if UNITY_ANDROID
            string adUnitId = "ca-app-pub-3940256099942544/6300978111";
        #elif UNITY_IPHONE
            string adUnitId = "ca-app-pub-3940256099942544/2934735716";
        #else
            string adUnitId = "unexpected_platform";
        #endif

        this.bannerView = new BannerView(adUnitId, AdSize.Banner, AdPosition.Top);

        // Called when an ad request has successfully loaded.
        this.bannerView.OnAdLoaded += this.HandleOnAdLoaded;
        // Called when an ad request failed to load.
        this.bannerView.OnAdFailedToLoad += this.HandleOnAdFailedToLoad;
        // Called when an ad is clicked.
        this.bannerView.OnAdOpening += this.HandleOnAdOpened;
        // Called when the user returned from the app after an ad click.
        this.bannerView.OnAdClosed += this.HandleOnAdClosed;
        // Called when the ad click caused the user to leave the application.
        this.bannerView.OnAdLeavingApplication += this.HandleOnAdLeavingApplication;

        // Create an empty ad request.
        AdRequest request = new AdRequest.Builder().Build();

        // Load the banner with the request.
        this.bannerView.LoadAd(request);
    }

    public void HandleOnAdLoaded(object sender, EventArgs args)
    {
        MonoBehaviour.print("HandleAdLoaded event received");
    }

    public void HandleOnAdFailedToLoad(object sender, AdFailedToLoadEventArgs args)
    {
        MonoBehaviour.print("HandleFailedToReceiveAd event received with message: "
                            + args.Message);
    }

    public void HandleOnAdOpened(object sender, EventArgs args)
    {
        MonoBehaviour.print("HandleAdOpened event received");
    }

    public void HandleOnAdClosed(object sender, EventArgs args)
    {
        MonoBehaviour.print("HandleAdClosed event received");
    }

    public void HandleOnAdLeavingApplication(object sender, EventArgs args)
    {
        MonoBehaviour.print("HandleAdLeavingApplication event received");
    }
}

El evento OnAdFailedToLoad contiene argumentos de evento especiales. Concretamente, transmite una instancia de HandleAdFailedToLoadEventArgs con Message, que describe el error:

public void HandleOnAdFailedToLoad(object sender, AdFailedToLoadEventArgs args)
{
  MonoBehaviour.print("Banner failed to load: " + args.Message);
  // Handle the ad failed to load event.
};
Evento de anuncioDescripción
OnAdLoaded El evento OnAdLoaded se ejecuta cuando un anuncio ha terminado de cargarse.
OnAdFailedToLoad El evento OnAdFailedToLoad se invoca cuando un anuncio no se puede cargar. El parámetro Message describe el tipo de error que se ha producido.
OnAdOpening Este método se invoca cuando el usuario toca un anuncio. Si utilizas un paquete de análisis para realizar un seguimiento de los clics, es un buen lugar para registrar uno.
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 de cara a la interacción.
OnAdLeavingApplication Este método se invoca después de onAdOpened, cuando un usuario hace clic y abre otra aplicación (por ejemplo, Google Play Store), y deja en segundo plano la aplicación que se estaba ejecutando en ese momento.

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 estándar 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.

Limpiar anuncios de banner

Cuando hayas terminado con un elemento BannerView, no olvides hacer una llamada al método Destroy() antes de eliminar la referencia a él:

bannerView.Destroy();

De esta forma, se notifica al complemento que el objeto ya no se usa y que se puede reclamar la memoria que ocupa. Si no se llama a este método, se producen pérdidas de memoria.

Otros recursos

Ejemplos

Casos de éxito