Los anuncios recompensados son aquellos con los que los usuarios pueden interactuar a cambio para obtener recompensas en la app. En esta guía, se muestra cómo integrar anuncios recompensados desde AdMob en una app para Unity.
Lea algunas historias de éxito de clientes: caso de éxito 1, caso de éxito 2.En esta guía, se explica cómo integrar anuncios recompensados en una app para Unity.
Requisitos previos
- Completa la guía de introducción.
Siempre realiza pruebas 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ó de forma especial para mostrar anuncios de prueba en lugar de mostrar anuncios de producción para cada solicitud, por lo que es seguro de usar.
Sin embargo, después de registrar una app en la interfaz web de AdMob y crear tus propios IDs de unidad de anuncios para usar en tu app, configura tu dispositivo como un dispositivo de prueba de forma explícita durante el desarrollo.
Android
ca-app-pub-3940256099942544/5224354917
iOS
ca-app-pub-3940256099942544/1712485313
Inicializa el SDK de Mobile Ads
Antes de cargar anuncios, haz que tu app inicialice el SDK de anuncios para dispositivos móviles llamando a MobileAds.Initialize()
. Esto debe hacerse una sola 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 utiliza la mediación, espere hasta que se produzca la devolución de llamada antes de cargar anuncios como Esto garantizará que se inicialicen todos los adaptadores de mediación.
Implementación
Estos son los pasos principales para integrar los anuncios recompensados:
- Carga el anuncio recompensado
- Valida las devoluciones de llamada de la verificación del servidor (SSV) [opcional].
- Muestra el anuncio recompensado con la devolución de llamada de recompensa
- Cómo escuchar eventos de anuncios recompensados
- Limpia el anuncio recompensado
- Precargar el siguiente anuncio recompensado
Carga el anuncio recompensado
La carga de un anuncio recompensado se realiza con el método estático Load()
en la
Clase RewardedAd
. El objeto RewardedAd
cargado se proporciona como un
en el controlador de finalización. En el siguiente ejemplo, se muestra cómo cargar un
RewardedAd
// These ad units are configured to always serve test ads.
#if UNITY_ANDROID
private string _adUnitId = "ca-app-pub-3940256099942544/5224354917";
#elif UNITY_IPHONE
private string _adUnitId = "ca-app-pub-3940256099942544/1712485313";
#else
private string _adUnitId = "unused";
#endif
private RewardedAd _rewardedAd;
/// <summary>
/// Loads the rewarded ad.
/// </summary>
public void LoadRewardedAd()
{
// Clean up the old ad before loading a new one.
if (_rewardedAd != null)
{
_rewardedAd.Destroy();
_rewardedAd = null;
}
Debug.Log("Loading the rewarded ad.");
// create our request used to load the ad.
var adRequest = new AdRequest();
// send the request to load the ad.
RewardedAd.Load(_adUnitId, adRequest,
(RewardedAd ad, LoadAdError error) =>
{
// if error is not null, the load request failed.
if (error != null || ad == null)
{
Debug.LogError("Rewarded ad failed to load an ad " +
"with error : " + error);
return;
}
Debug.Log("Rewarded ad loaded with response : "
+ ad.GetResponseInfo());
_rewardedAd = ad;
});
}
Valida las devoluciones de llamada de la verificación del servidor (SSV) [opcional].
Aplicaciones que requieren datos adicionales en la verificación del servidor
las devoluciones de llamada deben usar la función de datos personalizados de los anuncios recompensados.
Cualquier valor de cadena establecido en un objeto de anuncio recompensado se pasa al custom_data
.
parámetro de consulta de la devolución de llamada de SSV. Si no se establece ningún valor de datos personalizado,
El valor del parámetro de consulta custom_data
no estará presente en la devolución de llamada de SSV.
El siguiente ejemplo de código demuestra cómo configurar las opciones de SSV después de la se cargó el anuncio recompensado.
// send the request to load the ad.
RewardedAd.Load(_adUnitId, adRequest, (RewardedAd ad, LoadAdError error) =>
{
// If the operation failed, an error is returned.
if (error != null || ad == null)
{
Debug.LogError("Rewarded ad failed to load an ad with error : " + error);
return;
}
// If the operation completed successfully, no error is returned.
Debug.Log("Rewarded ad loaded with response : " + ad.GetResponseInfo());
// Create and pass the SSV options to the rewarded ad.
var options = new ServerSideVerificationOptions
.Builder()
.SetCustomData("SAMPLE_CUSTOM_DATA_STRING")
.Build()
ad.SetServerSideVerificationOptions(options);
});
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 recompensa
Al presentar su anuncio, debe proporcionar una devolución de llamada para administrar la recompensa por
del 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.
public void ShowRewardedAd()
{
const string rewardMsg =
"Rewarded ad rewarded the user. Type: {0}, amount: {1}.";
if (rewardedAd != null && rewardedAd.CanShowAd())
{
rewardedAd.Show((Reward reward) =>
{
// TODO: Reward the user.
Debug.Log(String.Format(rewardMsg, reward.Type, reward.Amount));
});
}
}
Cómo escuchar eventos de anuncios recompensados
Para personalizar aún más el comportamiento de su anuncio, puede vincular en el ciclo de vida del anuncio: inicio, cierre, etc. Para escuchar estos eventos, registra un delegado como se muestra a continuación.
private void RegisterEventHandlers(RewardedAd ad)
{
// Raised when the ad is estimated to have earned money.
ad.OnAdPaid += (AdValue adValue) =>
{
Debug.Log(String.Format("Rewarded ad paid {0} {1}.",
adValue.Value,
adValue.CurrencyCode));
};
// Raised when an impression is recorded for an ad.
ad.OnAdImpressionRecorded += () =>
{
Debug.Log("Rewarded ad recorded an impression.");
};
// Raised when a click is recorded for an ad.
ad.OnAdClicked += () =>
{
Debug.Log("Rewarded ad was clicked.");
};
// Raised when an ad opened full screen content.
ad.OnAdFullScreenContentOpened += () =>
{
Debug.Log("Rewarded ad full screen content opened.");
};
// Raised when the ad closed full screen content.
ad.OnAdFullScreenContentClosed += () =>
{
Debug.Log("Rewarded ad full screen content closed.");
};
// Raised when the ad failed to open full screen content.
ad.OnAdFullScreenContentFailed += (AdError error) =>
{
Debug.LogError("Rewarded ad failed to open full screen content " +
"with error : " + error);
};
}
Limpia el anuncio recompensado
Cuando termines con un RewardedAd
, asegúrate de llamar a Destroy()
.
antes de descartar tu referencia:
_rewardedAd.Destroy();
Esto notifica al complemento que el objeto ya no se usa y la memoria que ocuparse de ellos. Si no se llama a este método, se generarán fugas de memoria.
Precargar el siguiente anuncio recompensado
RewardedAd
es un objeto de un solo uso. Esto significa que,
cuando se muestra un anuncio recompensado
el objeto no se puede volver a usar. Para solicitar otro anuncio recompensado,
deberás crear un nuevo objeto RewardedAd
.
Para preparar un anuncio recompensado para la próxima oportunidad de impresión, precarga el
anuncio recompensado una vez que OnAdFullScreenContentClosed
o
Se generó OnAdFullScreenContentFailed
evento de anuncio.
private void RegisterReloadHandler(RewardedAd ad)
{
// Raised when the ad closed full screen content.
ad.OnAdFullScreenContentClosed += () =>
{
Debug.Log("Rewarded Ad full screen content closed.");
// Reload the ad so that we can show another as soon as possible.
LoadRewardedAd();
};
// Raised when the ad failed to open full screen content.
ad.OnAdFullScreenContentFailed += (AdError error) =>
{
Debug.LogError("Rewarded ad failed to open full screen content " +
"with error : " + error);
// Reload the ad so that we can show another as soon as possible.
LoadRewardedAd();
};
}
Recursos adicionales
- Ejemplo de HelloWorld: Una implementación mínima de todos los formatos de anuncios