Anuncios de banner

Los anuncios de banner son anuncios rectangulares de imagen o de texto que ocupan un lugar 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, son un excelente punto de partida.

En esta guía descubrirás cómo integrar los anuncios de banner de AdMob en una aplicación de 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 sección Primeros pasos. Tu aplicación de 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 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.
        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 debe cargar los anuncios el objeto BannerView.
  • AdSize: el tamaño de anuncio de AdMob que quieres usar (consulta 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 se utilizan los diferentes bloques de anuncios, en función de la plataforma. Debes utilizar un bloque de anuncios de iOS para realizar solicitudes de anuncios en iOS y un bloque de anuncios de Android para realizar solicitudes en Android.

(Opcional) Posicionamiento de anuncios personalizados

Para tener más control sobre dónde se sitúa un elemento BannerView en la pantalla, aparte de lo que permiten configurar los valores de AdPosition, utiliza el constructor de BannerView que utiliza 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 personalizado para tu anuncio:

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

Comprobar siempre las aplicaciones con anuncios de prueba

El ejemplo de código anterior contiene un ID de bloque de anuncios que puedes usar 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 tu aplicación, tendrás que configurar de forma explícita tu dispositivo como un dispositivo de pruebas durante la fase de desarrollo. Esto es extremadamente importante, ya que las pruebas con anuncios reales (aunque nunca los toques) están prohibidas por la política de AdMob y pueden provocar la suspensión de tu cuenta. Consulta Anuncios de prueba para descubrir cómo asegurarte de que siempre recibes 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() de 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:

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

        // Create a 320x50 banner at the top of the screen.
        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.
        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 tu anuncio, puedes añadir varios eventos a su ciclo de vida: carga, apertura, cierre, etc. Para configurar la escucha de estos eventos, registra un delegado para el EventHandler apropiado, tal como se muestra a continuación.

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

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

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

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

        // Load the banner with the request.
        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. Transmite una instancia de HandleAdFailedToLoadEventArgs con un elemento 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 se termina de cargar.
OnAdFailedToLoad El evento OnAdFailedToLoad se invoca cuando no se puede cargar un anuncio. El parámetro Message describe el tipo de fallo 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 registrarlo.
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 realizar cualquier otra tarea necesaria para prepararse para la interacción.
OnAdLeavingApplication Este método se invoca después de onAdOpened, cuando el clic de un usuario abre otra aplicación (por ejemplo, Google Play Store), dejando la aplicación actual en segundo plano.

Los tamaños de banner compatibles son los siguientes:

Tamaño (ancho x alto) Descripción Disponibilidad Constante de AdSize
320 x 50 Banner estándar Teléfonos y tablets BANNER
320 x 100 Banner grande Teléfonos y tablets LARGE_BANNER
300 x 250 Rectángulo mediano de IAB Teléfonos y tablets MEDIUM_RECTANGLE
468 x 60 Banner de tamaño completo de IAB Tablets FULL_BANNER
728 x 90 Leaderboard de IAB Tablets LEADERBOARD
Ancho de pantalla x 32|50|90 Banner inteligente Teléfonos y tablets SMART_BANNER

Banners inteligentes

Los banners inteligentes son bloques de anuncios de banner que se adaptan al ancho de pantalla de diversos dispositivos en cualquier orientación. Contribuyen a afrontar el problema de fragmentación de las pantallas en diferentes dispositivos. Para ello, se detecta de forma "inteligente" el ancho del dispositivo en su orientación actual y se adapta la vista del anuncio a dicho tamaño.

En los banners inteligentes se implementan tres alturas de anuncios:

Altura del anuncio Altura de la pantalla
32 dp ≤ 400 dp
50 dp > 400 dp y ≤ 720 dp
90 dp > 720 dp

Normalmente, en los teléfonos, los banners inteligentes suelen tener una altura de 50 dp en orientación vertical y de 32 dp en horizontal. En tablets, la altura suele ser de 90 dp en ambas orientaciones.

Si un anuncio de imagen no es lo suficientemente grande como para ocupar todo el espacio asignado, la imagen se centra y se rellena el espacio a ambos lados.

Para usar banners inteligentes, especifica el elemento AdSize.SmartBanner para el tamaño de anuncio al crear un elemento BannerView. Por ejemplo:

// Create a Smart Banner at the top of the screen.
BannerView bannerView = new BannerView(adUnitId, AdSize.SmartBanner, AdPosition.Top);

Limpiar anuncios de banner

Cuando hayas terminado con un elemento BannerView, no olvides realizar 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

Pasos siguientes

Enviar comentarios sobre…

¿Necesitas ayuda? Visita nuestra página de asistencia.