Anuncios recompensados

Selecciona la plataforma: Android iOS Unity Flutter

Los anuncios recompensados son aquellos con los que los usuarios pueden interactuar a cambio de recompensas en la aplicación. En esta guía, se muestra cómo integrar anuncios recompensados de AdMob en una app de Unity.

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

Requisitos previos

Haz siempre una comprobación 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 devolver anuncios de prueba en lugar de anuncios de producción para cada solicitud, lo que hace que sea seguro de usar.

Aun así, después de registrar una app en la interfaz web de Ad Manager y crear tus propios IDs de unidades de anuncios para usarlos en tu app, debes configurar tu dispositivo de forma explícita como un dispositivo de prueba durante el desarrollo.

/21775744923/example/rewarded

Inicializa el SDK de anuncios para dispositivos móviles

Antes de cargar anuncios, llama a MobileAds.Initialize() para que tu app inicialice el SDK de anuncios para dispositivos móviles. Esto solo se debe hacer 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 la mediación, espera a que se produzca la devolución de llamada antes de cargar anuncios, ya que esto garantizará que se inicialicen todos los adaptadores de mediación.

Carga el anuncio recompensado

Para cargar un anuncio recompensado, se usa el método estático Load() en la clase RewardedAd. El objeto RewardedAd cargado se incluye como parámetro en el controlador de finalización. En el siguiente ejemplo, se carga un anuncio recompensado:

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

// Send the request to load the ad.
RewardedAd.Load("AD_UNIT_ID", adRequest, (RewardedAd ad, LoadAdError error) =>
{
    if (error != null)
    {
        // The ad failed to load.
        return;
    }
    // The ad loaded successfully.
});

Reemplaza AD_UNIT_ID por tu ID de unidad de anuncios.

Valida las devoluciones de llamada de la verificación del servidor (SSV) (opcional)

Las apps que requieren datos adicionales en las devoluciones de llamada de la verificación del servidor deben usar la función de datos personalizados de los anuncios recompensados. Todos los valores de cadena establecidos en un objeto de anuncio recompensado se pasan al parámetro de consulta custom_data de la devolución de llamada de la SSV. Si no se establece ningún valor de datos personalizados, el valor del parámetro de consulta custom_data no estará presente en la devolución de llamada de la SSV.

En la siguiente muestra de código, se puede ver cómo se establecen las opciones de la SSV después de que se carga el anuncio recompensado.

// Create and pass the SSV options to the rewarded ad.
var options = new ServerSideVerificationOptions
{
    CustomData = ""SAMPLE_CUSTOM_DATA_STRING""
};

rewardedAd.SetServerSideVerificationOptions(options);

Reemplaza SAMPLE_CUSTOM_DATA_STRING por tus datos personalizados.

Si deseas establecer la cadena de recompensa personalizada, debes hacerlo antes de mostrar el anuncio.

Muestra el anuncio recompensado con la devolución de llamada de la recompensa

Cuando presentes tu anuncio, deberás proporcionar una devolución de llamada para controlar la recompensa destinada al usuario. Los anuncios solo se pueden mostrar una vez por carga. Usa el método CanShowAd() para verificar que el anuncio esté listo para mostrarse.

El siguiente código presenta el mejor método para mostrar un anuncio recompensado.

if (rewardedAd != null && rewardedAd.CanShowAd()) { rewardedAd.Show((Reward reward) => { // Se mostró el anuncio y el usuario obtuvo una recompensa. }); }

Escucha eventos de anuncios recompensados

Para personalizar aún más el comportamiento de tu anuncio, puedes agregar un hook a varios eventos en su ciclo de vida. El siguiente código escucha los eventos de anuncios:

rewardedAd.OnAdPaid += (AdValue adValue) => { // Se produce cuando se estima que el anuncio generó dinero. }; rewardedAd.OnAdImpressionRecorded += () => { // Se produce cuando se registra una impresión para un anuncio. }; rewardedAd.OnAdClicked += () => { // Se produce cuando se registra un clic en un anuncio. }; rewardedAd.OnAdFullScreenContentOpened += () => { // Se produce cuando se abrió el contenido del anuncio en pantalla completa. }; rewardedAd.OnAdFullScreenContentClosed += () => { // Se produce cuando se cerró la pantalla completa para el contenido del anuncio. }; rewardedAd.OnAdFullScreenContentFailed += (AdError error) => { // Se produce cuando no se pudo abrir el contenido del anuncio en pantalla completa. };

Borra el anuncio recompensado

Cuando termines de usar el objeto RewardedAd, asegúrate de llamar al método Destroy() antes de descartar la referencia a él:

if (rewardedAd != null) { rewardedAd.Destroy(); }

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

Precarga el siguiente anuncio recompensado

RewardedAd es un objeto de un solo uso. Esto significa que, una vez que se muestra un anuncio recompensado, no se puede volver a usar el objeto. Para solicitar otro anuncio recompensado, deberás crear un objeto RewardedAd nuevo.

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

rewardedAd.OnAdFullScreenContentClosed += () =>
{
    // Reload the ad so that we can show another as soon as possible.
    var adRequest = new AdRequest();
    RewardedAd.Load("AD_UNIT_ID", adRequest, (RewardedAd ad, LoadAdError error) =>
    {
        // Handle ad loading here.
    });
};

Recursos adicionales