API nuevas para los anuncios bonificados (versión beta)

Los anuncios bonificados permiten a los usuarios conseguir bonificaciones en una aplicación a cambio de interactuar con ellos. En esta guía, te mostramos cómo integrar este tipo de anuncios desde AdMob en una aplicación de Unity.

Requisitos

  • Tener instalado el complemento de Unity 3.16.0 o una versión posterior.
  • Completar 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 de anuncio bonificado

Los anuncios bonificados se solicitan y muestran mediante los objetos RewardedAd. El primer paso para mostrar uno de estos anuncios es crear una instancia de un objeto RewardedAd invocando el constructor con el ID de bloque de anuncios que se va a utilizar para cargarlo. Este proceso se muestra en el siguiente fragmento de código:

using GoogleMobileAds.Api;
...
public class GoogleMobileAdsDemoScript : MonoBehaviour
{
    private RewardedAd rewardedAd;
    ...

    public void Start()
    {
        ...

        this.rewardedAd = new RewardedAd(adUnitId);
    }
}

Comprobar siempre las aplicaciones con anuncios de prueba

Cuando crees y pruebes tus aplicaciones, utiliza siempre anuncios de prueba en lugar de anuncios de producción que se estén publicando. De lo contrario, podríamos suspender tu cuenta.

La forma más sencilla de cargar anuncios de prueba es utilizar los ID exclusivos de los bloques de anuncios de prueba para los anuncios bonificados de Android y iOS:

Android

ca-app-pub-3940256099942544/5224354917

iOS

ca-app-pub-3940256099942544/1712485313

Se han configurado especialmente para devolver anuncios de prueba para cada solicitud, y puedes usarlos en tus propias aplicaciones mientras programas, realizas pruebas y depuras los posibles errores. Solo tienes que sustituirlos por el ID de tu bloque de anuncios antes de publicar la aplicación.

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

Cargar anuncios

Para cargar un anuncio bonificado, llama al método loadAd() del objeto RewardedAd. Este método requiere una instancia de AdRequest como argumento.

using GoogleMobileAds.Api;
...
public class GoogleMobileAdsDemoScript : MonoBehaviour
{
    private RewardedAd rewardedAd;
    ...

    public void Start()
    {
        ...

        this.rewardedAd = new RewardedAd(adUnitId);

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

Eventos de anuncios

Para personalizar todavía más el comportamiento de tu anuncio, puedes incorporar varios eventos a su ciclo de vida (como a la carga, la apertura o el cierre). Para detectar estos eventos, registra un delegado para el gestor de anuncios adecuado. El evento más importante es OnUserEarnedReward, al que se llama cuando el usuario recibe una recompensa por ver un video. También puedes implementar otros eventos de anuncios, como se muestra a continuación:

using GoogleMobileAds.Api;
...
public class GoogleMobileAdsDemoScript : MonoBehaviour
{
    private RewardedAd rewardedAd;
    ...

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

        this.rewardedAd = new RewardedAd(adUnitId);

        // Called when an ad request has successfully loaded.
        this.rewardedAd.OnAdLoaded += HandleRewardedAdLoaded;
        // Called when an ad request failed to load.
        this.rewardedAd.OnAdFailedToLoad += HandleRewardedAdFailedToLoad;
        // Called when an ad is shown.
        this.rewardedAd.OnAdOpening += HandleRewardedAdOpening;
        // Called when an ad request failed to show.
        this.rewardedAd.OnAdFailedToShow += HandleRewardedAdFailedToShow;
        // Called when the user should be rewarded for interacting with the ad.
        this.rewardedAd.OnUserEarnedReward += HandleUserEarnedReward;
        // Called when the ad is closed.
        this.rewardedAd.OnAdClosed += HandleRewardedAdClosed;

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

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

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

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

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

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

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

El evento OnUserEarnedReward proporciona argumentos especiales. Concretamente, transmite una instancia de Reward con Type y Amount, que sirven para describir la bonificación concedida al usuario, como puedes ver a continuación:

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

Eventos de anuncio disponibles

OnAdLoaded
Se invoca cuando un anuncio ha terminado de cargarse.
OnAdFailedToLoad
Se invoca cuando un anuncio no ha podido cargarse. La propiedad Message del elemento AdErrorEventArgs proporcionado describe el tipo de fallo que se ha producido.
OnAdOpening
Se invoca cuando se muestra un anuncio y cubre la pantalla del dispositivo. Este es un buen momento para pausar la salida de audio de la aplicación o el bucle de juego, si es necesario.
OnAdFailedToShow
Se invoca cuando un anuncio no ha podido mostrarse. La propiedad Message del elemento AdErrorEventArgs proporcionado describe el tipo de fallo que se ha producido.
OnUserEarnedReward
Se invoca cuando un usuario debe recibir una bonificación por ver un vídeo. El parámetro Reward describe la bonificación que se debe proporcionar al usuario.
OnAdClosed
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 detiene la salida de audio o el bucle del juego, este es un buen lugar para reanudarlos.

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 bonificado, comprueba el método IsLoaded() para verificar que ha terminado de cargarse y, después, llama a show(). A continuación te mostramos un ejemplo de cómo hacerlo:

private void UserChoseToWatchAd()
{
  if (this.rewardedAd.IsLoaded()) {
    this.rewardedAd.Show();
  }
}

Usar OnAdClosed para precargar el siguiente anuncio bonificado

RewardedAd es un objeto de un solo uso. Esto quiere decir que, una vez que se muestre un anuncio bonificado, dicho objeto no podrá usarse para cargar otro anuncio de este tipo. Para solicitar otro anuncio bonificado, deberás crear un objeto RewardedAd nuevo.

Como práctica recomendada, puedes cargar otro anuncio bonificado en el evento de anuncio OnAdClosed, de forma que el siguiente anuncio de este tipo empiece a cargarse en cuanto el anterior se haya cerrado, tal y como se muestra en este fragmento de código:

using GoogleMobileAds.Api;
...
public class GoogleMobileAdsDemoScript : MonoBehaviour
{
    private RewardedAd rewardedAd;
    ...

    public void CreateAndLoadRewardedAd()
    {
        #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

        this.rewardedAd = new RewardedAd(adUnitId);

        this.rewardedAd.OnAdLoaded += HandleRewardedAdLoaded;
        this.rewardedAd.OnUserEarnedReward += HandleUserEarnedReward;
        this.rewardedAd.OnAdClosed += HandleRewardedAdClosed;

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

...

    public void HandleRewardedAdClosed(object sender, EventArgs args)
    {
        this.CreateAndLoadRewardedAd();
    }
}

Cargar varios anuncios bonificados

Si quieres cargar varios anuncios bonificados, sigue los pasos que se describen en las secciones Crear un objeto de anuncio bonificado y Cargar anuncios para cada uno de los anuncios en cuestión. En el siguiente fragmento de código se muestra cómo cargar dos anuncios bonificados en dos emplazamientos publicitarios diferentes:

using GoogleMobileAds.Api;
...
public class GoogleMobileAdsDemoScript : MonoBehaviour
{
    private RewardedAd gameOverRewardedAd;
    private RewardedAd extraCoinsRewardedAd;
    ...
    public void Start()
    {
        ...

        this.gameOverRewardedAd = CreateAndLoadRewardedAd(adUnitId);
        this.extraCoinsRewardedAd = CreateAndLoadRewardedAd(adUnitId);
    }

    public RewardedAd CreateAndLoadRewardedAd(string adUnitId)
    {
        RewardedAd rewardedAd = new RewardedAd(adUnitId);

        rewardedAd.OnAdLoaded += HandleRewardedAdLoaded;
        rewardedAd.OnUserEarnedReward += HandleUserEarnedReward;
        rewardedAd.OnAdClosed += HandleRewardedAdClosed;

        // Create an empty ad request.
        AdRequest request = new AdRequest.Builder().Build();
        // Load the rewarded ad with the request.
        rewardedAd.LoadAd(request);
        return rewardedAd;
    }
}

Otros recursos

Ejemplos

Pasos siguientes

Enviar comentarios sobre...

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