Anuncios intersticiales

Los anuncios intersticiales son anuncios de pantalla completa que cubren la interfaz de su app host. Por lo general, se muestran en puntos de transición naturales en el flujo de una app, como durante la pausa entre niveles de un juego. Cuando una app muestra un anuncio intersticial, el usuario tiene la opción de presionar el anuncio y continuar a su destino, o bien cerrarlo y regresar a la app.

En esta guía, se explica cómo integrar anuncios intersticiales en una app para Unity.

Requisitos previos

Realizar pruebas siempre con anuncios de prueba

El siguiente código de muestra contiene un ID de unidad de anuncios que puedes usar para solicitar anuncios de prueba. Se configuró especialmente para mostrar anuncios de prueba en lugar de anuncios de producción en cada solicitud, lo que hace que su uso sea seguro.

Sin embargo, después de registrar una app en la interfaz web deAd Manager y crear tus propios ID de unidades de anuncios para usar en la app, configura tu dispositivo como dispositivo de prueba de forma explícita durante el desarrollo.

/6499/example/interstitial

Inicializa el SDK de anuncios para dispositivos móviles

Antes de cargar anuncios, haz que tu app inicialice el SDK de anuncios para dispositivos móviles llamando a MobileAds.Initialize(). Esto debe hacerse solo una vez, idealmente cuando se inicia la app.

using GoogleMobileAds;
using GoogleMobileAds.Api;

public class GoogleMobileAdsDemoScript : MonoBehaviour
{
    public void Start()
    {
        // Initialize the Google Mobile Ads SDK.
        MobileAds.Initialize((InitializationStatus initStatus) =>
        {
            // This callback is called once the MobileAds SDK is initialized.
        });
    }
}

Si usas mediación, espera hasta que se produzca la devolución de llamada antes de cargar anuncios, ya que esto garantizará que todos los adaptadores de mediación se inicialicen.

Implementación

Los pasos principales para integrar anuncios intersticiales son los siguientes:

  1. Carga el anuncio intersticial
  2. Muestra el anuncio intersticial
  3. Cómo escuchar eventos de anuncios intersticiales
  4. Cómo limpiar el anuncio intersticial
  5. Precarga el siguiente anuncio intersticial

Carga el anuncio intersticial

La carga de un anuncio intersticial se realiza con el método estático Load() en la clase InterstitialAd. El método de carga requiere un ID de unidad de anuncios, un objeto AdManagerAdRequest y un controlador de finalización al que se llama cuando la carga de anuncios se realiza correctamente o falla. El objeto AdManagerInterstitialAd cargado se proporciona como parámetro en el controlador de finalización. En el siguiente ejemplo, se muestra cómo cargar una AdManagerInterstitialAd.


  // This ad unit is configured to always serve test ads.
  private string _adUnitId = "/6499/example/interstitial";

  private InterstitialAd _interstitialAd;

  /// <summary>
  /// Loads the interstitial ad.
  /// </summary>
  public void LoadInterstitialAd()
  {
      // Clean up the old ad before loading a new one.
      if (_interstitialAd != null)
      {
            _interstitialAd.Destroy();
            _interstitialAd = null;
      }

      Debug.Log("Loading the interstitial ad.");

      // create our request used to load the ad.
      var adRequest = new AdManagerAdRequest();

      // send the request to load the ad.
      AdManagerInterstitialAd.Load(_adUnitId, adRequest,
          (InterstitialAd ad, LoadAdError error) =>
          {
              // if error is not null, the load request failed.
              if (error != null || ad == null)
              {
                  Debug.LogError("interstitial ad failed to load an ad " +
                                 "with error : " + error);
                  return;
              }

              Debug.Log("Interstitial ad loaded with response : "
                        + ad.GetResponseInfo());

              _interstitialAd = ad;
          });
  }

Muestra el anuncio intersticial

Para mostrar un anuncio intersticial cargado, llama al método Show() en la instancia AdManagerInterstitialAd. Los anuncios pueden aparecer una vez por carga. Utiliza el método CanShowAd() para verificar que el anuncio esté listo para mostrarse.

/// <summary>
/// Shows the interstitial ad.
/// </summary>
public void ShowInterstitialAd()
{
    if (_interstitialAd != null && _interstitialAd.CanShowAd())
    {
        Debug.Log("Showing interstitial ad.");
        _interstitialAd.Show();
    }
    else
    {
        Debug.LogError("Interstitial ad is not ready yet.");
    }
}

Cómo escuchar eventos de anuncios intersticiales

Para personalizar aún más el comportamiento de tu anuncio, puedes incorporar una serie de eventos en el ciclo de vida del anuncio. Para escuchar estos eventos, registra a un delegado como se muestra a continuación.

private void RegisterEventHandlers(InterstitialAd interstitialAd)
{
    // Raised when the ad is estimated to have earned money.
    interstitialAd.OnAdPaid += (AdValue adValue) =>
    {
        Debug.Log(String.Format("Interstitial ad paid {0} {1}.",
            adValue.Value,
            adValue.CurrencyCode));
    };
    // Raised when an impression is recorded for an ad.
    interstitialAd.OnAdImpressionRecorded += () =>
    {
        Debug.Log("Interstitial ad recorded an impression.");
    };
    // Raised when a click is recorded for an ad.
    interstitialAd.OnAdClicked += () =>
    {
        Debug.Log("Interstitial ad was clicked.");
    };
    // Raised when an ad opened full screen content.
    interstitialAd.OnAdFullScreenContentOpened += () =>
    {
        Debug.Log("Interstitial ad full screen content opened.");
    };
    // Raised when the ad closed full screen content.
    interstitialAd.OnAdFullScreenContentClosed += () =>
    {
        Debug.Log("Interstitial ad full screen content closed.");
    };
    // Raised when the ad failed to open full screen content.
    interstitialAd.OnAdFullScreenContentFailed += (AdError error) =>
    {
        Debug.LogError("Interstitial ad failed to open full screen content " +
                       "with error : " + error);
    };
}

Cómo limpiar el anuncio intersticial

Cuando termines con un AdManagerInterstitialAd, asegúrate de llamar al método Destroy() antes de descartar tu referencia a él:

_interstitialAd.Destroy();

Esto notifica al complemento que el objeto ya no se usa y la memoria que ocupa se puede reclamar. Si no se llama a este método, se generarán fugas de memoria.

Precarga el siguiente anuncio intersticial

Los anuncios intersticiales son un objeto de un solo uso. Esto significa que, una vez que se muestra un anuncio intersticial, el objeto no se puede volver a usar. Para solicitar otro anuncio intersticial, crea un nuevo objeto AdManagerInterstitialAd.

Si deseas preparar un anuncio intersticial para la próxima oportunidad de impresión, precárgalo una vez que se genere el evento de anuncio OnAdFullScreenContentClosed o OnAdFullScreenContentFailed.

private void RegisterReloadHandler(InterstitialAd interstitialAd)
{
    // Raised when the ad closed full screen content.
    interstitialAd.OnAdFullScreenContentClosed += ()
    {
        Debug.Log("Interstitial Ad full screen content closed.");

        // Reload the ad so that we can show another as soon as possible.
        LoadInterstitialAd();
    };
    // Raised when the ad failed to open full screen content.
    interstitialAd.OnAdFullScreenContentFailed += (AdError error) =>
    {
        Debug.LogError("Interstitial ad failed to open full screen content " +
                       "with error : " + error);

        // Reload the ad so that we can show another as soon as possible.
        LoadInterstitialAd();
    };
}

Eventos de aplicaciones

Los eventos de aplicaciones le permiten crear anuncios que pueden enviar mensajes al código de esa aplicación. Luego, la app puede realizar acciones basadas en esos mensajes.

Puedes escuchar eventos de aplicaciones específicos de Ad Manager mediante AppEvent. Estos eventos pueden ocurrir en cualquier momento durante el ciclo de vida del anuncio, incluso antes de que se llame a la carga.

namespace GoogleMobileAds.Api.AdManager;

/// The App event message sent from the ad.
public class AppEvent
{
    // Name of the app event.
    string Name;
    // Argument passed from the app event.
    string Value;
}

OnAppEventReceived se genera cuando se produce un evento de aplicación en un anuncio. A continuación, se muestra un ejemplo de cómo controlar este evento en tu código:

_interstitialAd.OnAppEventReceived += (AppEvent args) =>
{
    Debug.Log($"Received app event from the ad: {args.Name}, {args.Value}.");
};

A continuación, puedes ver un ejemplo en el que se muestra cómo cambiar el color de fondo de tu app según un evento de la app con un nombre de color:

_interstitialAd.OnAppEventReceived += (AppEvent args) =>
{
  if (args.Name == "color")
  {
    Color color;
    if (ColorUtility.TryParseColor(arg.Value, out color))
    {
      gameObject.GetComponent<Renderer>().material.color = color;
    }
  }
};

Y esta es la creatividad correspondiente que envía el evento de color de la app:

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

Prácticas recomendadas

Determina si los anuncios intersticiales son el tipo de anuncio adecuado para tu app.
Los anuncios intersticiales funcionan mejor en apps con puntos de transición naturales. La conclusión de una tarea dentro de una app, como compartir una imagen o completar el nivel de un juego, crea ese punto. Asegúrate de considerar los puntos del flujo de tu app para mostrar mejores anuncios intersticiales y la posible respuesta del usuario.
Detén la acción cuando se muestre un anuncio intersticial.
Existen muchos tipos diferentes de anuncios intersticiales, como anuncios de texto, imágenes o video. Es importante asegurarse de que, cuando la app muestre un anuncio intersticial, también se suspenda el uso de algunos recursos para permitir que el anuncio los aproveche. Por ejemplo, cuando realices la llamada para mostrar un anuncio intersticial, asegúrate de pausar cualquier salida de audio que produzca tu app. Puedes reanudar la reproducción de sonidos en el evento OnAdFullScreenContentClosed(), que se puede invocar cuando el usuario termina de interactuar con el anuncio. Además, considera la opción de detener temporalmente cualquier tarea de procesamiento intensa, como un bucle de juego, mientras se muestra el anuncio. Esto garantiza que el usuario no experimente gráficos lentos o que no responden, ni videos entrecortados.
No sobrecargues al usuario con anuncios.
Si bien aumentar la frecuencia de los anuncios intersticiales en tu app puede parecer una excelente manera de aumentar los ingresos, también puede perjudicar la experiencia del usuario y disminuir las tasas de clics. Asegúrate de que los usuarios no se interrumpan con tanta frecuencia como para que ya no puedan disfrutar de usar tu app.

Recursos adicionales