Anuncios de vídeo bonificados

Los anuncios de vídeo bonificados son anuncios de vídeo a pantalla completa que conceden bonificaciones dentro de la aplicación a los usuarios que los ven enteros.

En esta guía te mostramos cómo integrar este tipo de anuncios desde AdMob en una aplicación de Unity.

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.

Obtener una referencia a una instancia de singleton

El primer paso para mostrar un anuncio de vídeo bonificado es obtener una referencia a la instancia RewardBasedVideoAd de singleton. Para ello, debes llamar a RewardBasedVideoAd.Instance.

using GoogleMobileAds.Api;
...
public class GoogleMobileAdsDemoScript : MonoBehaviour
{
    private RewardBasedVideoAd rewardBasedVideo;
    ...

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

        // Get singleton reward based video ad reference.
        this.rewardBasedVideo = RewardBasedVideoAd.Instance;

    }
}

Cargar un anuncio

Como RewardedBasedVideoAd tiene un diseño de singleton, las solicitudes para cargar anuncios deben hacerse mediante una instancia compartida.

Se recomienda encarecidamente llamar a LoadAd() lo antes posible (por ejemplo, en el método Start() de una secuencia de comandos adjunta a un GameObject) para permitir que los vídeos se precarguen, como se muestra a continuación:

...
using GoogleMobileAds.Api;
...
public class GoogleMobileAdsDemoScript : MonoBehaviour
{
    private RewardBasedVideoAd rewardBasedVideo;
    ...

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

        // Get singleton reward based video ad reference.
        this.rewardBasedVideo = RewardBasedVideoAd.Instance;

        this.RequestRewardBasedVideo();
    }

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

        // Create an empty ad request.
        AdRequest request = new AdRequest.Builder().Build();
        // Load the rewarded video ad with the request.
        this.rewardBasedVideo.LoadAd(request, adUnitId);
    }
}

Comprobar siempre las aplicaciones con anuncios de prueba

El código de ejemplo anterior contiene un ID de bloque de anuncios 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 tu aplicación, tendrás que configurar de forma explícita 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) 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.

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 recibir información sobre estos eventos, registra un delegado para el EventHandler correspondiente. El evento más importante es OnAdRewarded, al que se llama cuando hay que recompensar al usuario porque ha visto un vídeo. También puedes implementar otros eventos de anuncios, como se muestra a continuación:

...
using GoogleMobileAds.Api;
...
public class GoogleMobileAdsDemoScript : MonoBehaviour
{
    private RewardBasedVideoAd rewardBasedVideo;
    ...

    public void Start()
    {
        // Get singleton reward based video ad reference.
        this.rewardBasedVideo = RewardBasedVideoAd.Instance;

        // Called when an ad request has successfully loaded.
        rewardBasedVideo.OnAdLoaded += HandleRewardBasedVideoLoaded;
        // Called when an ad request failed to load.
        rewardBasedVideo.OnAdFailedToLoad += HandleRewardBasedVideoFailedToLoad;
        // Called when an ad is shown.
        rewardBasedVideo.OnAdOpening += HandleRewardBasedVideoOpened;
        // Called when the ad starts to play.
        rewardBasedVideo.OnAdStarted += HandleRewardBasedVideoStarted;
        // Called when the user should be rewarded for watching a video.
        rewardBasedVideo.OnAdRewarded += HandleRewardBasedVideoRewarded;
        // Called when the ad is closed.
        rewardBasedVideo.OnAdClosed += HandleRewardBasedVideoClosed;
        // Called when the ad click caused the user to leave the application.
        rewardBasedVideo.OnAdLeavingApplication += HandleRewardBasedVideoLeftApplication;

        this.RequestRewardBasedVideo();
    }

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

        // Create an empty ad request.
        AdRequest request = new AdRequest.Builder().Build();
        // Load the rewarded video ad with the request.
        this.rewardBasedVideo.LoadAd(request, adUnitId);
    }

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

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

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

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

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

    public void HandleRewardBasedVideoRewarded(object sender, Reward args)
    {
        string type = args.Type;
        double amount = args.Amount;
        MonoBehaviour.print(
            "HandleRewardBasedVideoRewarded event received for "
                        + amount.ToString() + " " + type);
    }

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

El evento OnAdRewarded contiene argumentos de evento especiales. Transmite una instancia de Reward con un Type y un Amount que describen la bonificación concedida al usuario:

public void HandleRewardBasedVideoRewarded(object sender, Reward args)
{
    string type = args.Type;
    double amount = args.Amount;
    print("User rewarded with: " + amount.ToString() + " " + type);
}

El evento OnAdFailedToLoad también 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)
{
  print("Rewarded video ad failed to load: " + args.Message);
  // Handle the ad failed to load event.
}
Evento de anuncioDescripción
OnAdLoaded El evento OnAdLoaded se invoca cuando un anuncio se ha terminado de cargar.
OnAdFailedToLoad El evento OnAdFailedToLoad se invoca cuando un anuncio no se carga. El parámetro Message describe el tipo de error que se ha producido.
OnAdOpening Este método se invoca cuando el anuncio mostrado ocupa toda la pantalla del dispositivo. Si utilizas un paquete de analíticas para hacer un seguimiento de los clics, este es un buen lugar para registrar uno.
OnAdStarted Este método se invoca cuando el anuncio comienza a reproducirse.
OnAdRewarded Este método se invoca cuando hay que conceder una bonificación a un usuario porque ha visto un vídeo. El parámetro Reward describe la bonificación que el usuario recibirá.
OnAdClosed Este método se invoca cuando el anuncio de vídeo bonificado se cierra debido a que el usuario toca el icono de cerrar o el botón para volver atrás. Si la aplicación detuvo la salida de audio o el bucle del juego, este es un buen lugar para reanudarla.
OnAdLeavingApplication Este método se invoca después de OnAdOpened, cuando un usuario hace clic y abre otra aplicación (como Google Play Store), y deja en segundo plano la aplicación actual.

Mostrar anuncios

Antes de mostrar un anuncio bonificado a los usuarios, debes ofrecerles explícitamente la posibilidad de elegir si quieren ver este tipo de contenido publicitario a cambio de una bonificación. Estos anuncios siempre deben ser una experiencia que los usuarios elijan de forma voluntaria.

Para mostrar un anuncio de vídeo bonificado, utiliza el método IsLoaded() para verificar que ha terminado de cargarse y, después, llama a Show().

El siguiente fragmento de código indica cómo mostrar un anuncio de vídeo bonificado.

private void UserOptToWatchAd()
{
  if (rewardBasedVideo.IsLoaded()) {
    rewardBasedVideo.Show();
  }
}

Volver a cargar un anuncio

El evento OnAdClosed es un lugar muy práctico para cargar un nuevo anuncio de vídeo bonificado después de mostrar el anterior:

public void Start()
{
    this.rewardBasedVideo = RewardBasedVideoAd.Instance;

    rewardBasedVideo.OnAdClosed += HandleRewardBasedVideoClosed;
}

public void HandleRewardBasedVideoClosed(object sender, EventArgs args)
{
    this.RequestRewardBasedVideo();
}

Otros recursos

Ejemplos

Pasos siguientes

  • Crea tu propio bloque de anuncios de vídeo bonificados en la interfaz de AdMob.
  • Prueba otro formato de anuncio:

Enviar comentarios sobre...

Si necesitas ayuda, visita nuestra página de asistencia.