Los anuncios bonificados permiten a los usuarios obtener bonificaciones en aplicaciones a cambio de interactuar con ellos. En esta guía, te mostramos cómo integrar anuncios bonificados de AdMob en aplicaciones Unity. Lee algunos casos de éxito de nuestros clientes: caso de éxito 1 y caso de éxito 2.
Requisitos
- Tener instalado el complemento de Unity 3.16.0 o una versión posterior.
- Completa la guía Primeros pasos. Tu aplicación Unity ya debería tener importado el complemento Unity de anuncios de Google para móviles.
Crear un objeto de anuncio bonificado
Los anuncios bonificados se solicitan y se 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:
Para integrar anuncios con el editor de Unity de forma sencilla, prueba la nueva versión beta de los emplazamientos publicitarios.
using UnityEngine.Events; using UnityEngine; using GoogleMobileAds.Api; using GoogleMobileAds.Common; using UnityEngine.UI; using System; using System.Collections.Generic; 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 testes tus aplicaciones, utiliza siempre anuncios de prueba en lugar de anuncios reales 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.
...
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 tus anuncios, puedes incorporar varios eventos a su ciclo de vida (como a la carga, la apertura o el cierre). Si quieres detectar estos eventos, registra un delegado correspondiente al gestor de eventos adecuado. El evento más importante es OnUserEarnedReward
, al que se llama cuando el usuario recibe una recompensa por ver un vídeo. También puedes implementar otros eventos de anuncio, como se muestra más abajo:
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 Reward
con objetos Type
y Amount
, que describen la bonificación concedida al usuario:
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 objetoAdErrorEventArgs
proporcionado describe el tipo de fallo que se ha producido. OnAdOpening
- Se invoca cuando se muestra un anuncio que 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 objetoAdErrorEventArgs
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
.
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 como se muestra en este fragmento de código:
... 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 con 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:
...
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
- Ejemplo de HelloWorld: una implementación mínima de todos los formatos de anuncios.
Pasos siguientes
- Crea tu propio bloque de anuncios de banner en la interfaz de AdMob.
- Prueba otros formatos de anuncio: