Los anuncios de vídeo bonificados son anuncios de vídeo a pantalla completa, que ofrecen recompensas 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 Android.
Requisitos
- Importar el SDK de anuncios de Google para móviles, ya sea de forma independiente o como parte de Firebase
Inicializar anuncios de vídeo bonificados
Java
package ... import com.google.android.gms.ads.AdRequest; import com.google.android.gms.ads.MobileAds; import com.google.android.gms.ads.reward.RewardedVideoAd; public class MainActivity extends AppCompatActivity implements RewardedVideoAdListener { private RewardedVideoAd mRewardedVideoAd; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); MobileAds.initialize(this, "ca-app-pub-3940256099942544~3347511713"); // Use an activity context to get the rewarded video instance. mRewardedVideoAd = MobileAds.getRewardedVideoAdInstance(this); mRewardedVideoAd.setRewardedVideoAdListener(this); } ... }
Kotlin
package ... import com.google.android.gms.ads.AdRequest import com.google.android.gms.ads.MobileAds import com.google.android.gms.ads.reward.RewardedVideoAd class MainActivity : AppCompatActivity(), RewardedVideoAdListener { private lateinit var mRewardedVideoAd: RewardedVideoAd override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) MobileAds.initialize(this, "ca-app-pub-3940256099942544~3347511713") // Use an activity context to get the rewarded video instance. mRewardedVideoAd = MobileAds.getRewardedVideoAdInstance(this) mRewardedVideoAd.rewardedVideoAdListener = this } ... }
Se puede obtener un objeto RewardedVideoAd
mediante MobileAds.getRewardedVideoAdInstance()
.
Para recibir notificaciones de eventos del ciclo de vida de los vídeos bonificados, debes implementar RewardedVideoAdListener
.
El procesador de este formato de anuncios se establece mediante el método setRewardedVideoAdListener()
y recibe notificaciones de forma automática de los eventos de todas las redes que uses para la mediación. Por ejemplo, recibirás una notificación si se bonifica a un usuario por ver un vídeo mediante el método onRewarded()
en RewardedVideoAdListener
.
Solicitar anuncios de vídeo bonificados
Java
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); MobileAds.initialize(this, "ca-app-pub-3940256099942544~3347511713"); // Use an activity context to get the rewarded video instance. mRewardedVideoAd = MobileAds.getRewardedVideoAdInstance(this); mRewardedVideoAd.setRewardedVideoAdListener(this); loadRewardedVideoAd(); } private void loadRewardedVideoAd() { mRewardedVideoAd.loadAd("ca-app-pub-3940256099942544/5224354917", new AdRequest.Builder().build()); }
Kotlin
override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) MobileAds.initialize(this, "ca-app-pub-3940256099942544~3347511713") // Use an activity context to get the rewarded video instance. mRewardedVideoAd = MobileAds.getRewardedVideoAdInstance(this) mRewardedVideoAd.rewardedVideoAdListener = this loadRewardedVideoAd() } private fun loadRewardedVideoAd() { mRewardedVideoAd.loadAd("ca-app-pub-3940256099942544/5224354917", AdRequest.Builder().build()) }
Para respetar el diseño de singleton de RewardedVideoAd
, las solicitudes para cargar un anuncio se deben hacer mediante una instancia compartida.
Se recomienda llamar a loadAd()
lo antes posible (por ejemplo, en el método onCreate()
de tu objeto Activity) para permitir que los vídeos se precarguen.
Usar siempre anuncios de prueba para probar las aplicaciones
Cuando crees y pruebes 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 usar el ID de bloque de anuncios de prueba que hemos creado para los anuncios de vídeo bonificados de Android:
ca-app-pub-3940256099942544/5224354917
Lo hemos configurado especialmente para devolver anuncios de prueba a cada solicitud, y puedes usarlo para programar, probar y depurar tus aplicaciones. Recuerda sustituirlo por el ID de uno de tus bloques de anuncios cuando vayas a 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 la guía Anuncios de prueba.
Configurar notificaciones de eventos
El SDK proporciona la interfaz RewardedVideoAdListener
, que incluye métodos que se corresponden con los eventos del ciclo de vida de los anuncios de vídeo bonificados. Haz que tu aplicación defina una clase que implemente esta interfaz y envíala a setRewardedVideoAdListener
antes de cargar un anuncio.
El ejemplo de código de Inicializar anuncios de vídeo bonificados muestra cómo declarar que tu clase implementa RewardedVideoAdListener
y configurar el procesador en el objeto RewardedVideoAd
.
A continuación, se incluye un ejemplo de implementación de los métodos de procesador:
Java
@Override public void onRewarded(RewardItem reward) { Toast.makeText(this, "onRewarded! currency: " + reward.getType() + " amount: " + reward.getAmount(), Toast.LENGTH_SHORT).show(); // Reward the user. } @Override public void onRewardedVideoAdLeftApplication() { Toast.makeText(this, "onRewardedVideoAdLeftApplication", Toast.LENGTH_SHORT).show(); } @Override public void onRewardedVideoAdClosed() { Toast.makeText(this, "onRewardedVideoAdClosed", Toast.LENGTH_SHORT).show(); } @Override public void onRewardedVideoAdFailedToLoad(int errorCode) { Toast.makeText(this, "onRewardedVideoAdFailedToLoad", Toast.LENGTH_SHORT).show(); } @Override public void onRewardedVideoAdLoaded() { Toast.makeText(this, "onRewardedVideoAdLoaded", Toast.LENGTH_SHORT).show(); } @Override public void onRewardedVideoAdOpened() { Toast.makeText(this, "onRewardedVideoAdOpened", Toast.LENGTH_SHORT).show(); } @Override public void onRewardedVideoStarted() { Toast.makeText(this, "onRewardedVideoStarted", Toast.LENGTH_SHORT).show(); } @Override public void onRewardedVideoCompleted() { Toast.makeText(this, "onRewardedVideoCompleted", Toast.LENGTH_SHORT).show(); }
Kotlin
override fun onRewarded(reward: RewardItem) { Toast.makeText(this, "onRewarded! currency: ${reward.type} amount: ${reward.amount}", Toast.LENGTH_SHORT).show() // Reward the user. } override fun onRewardedVideoAdLeftApplication() { Toast.makeText(this, "onRewardedVideoAdLeftApplication", Toast.LENGTH_SHORT).show() } override fun onRewardedVideoAdClosed() { Toast.makeText(this, "onRewardedVideoAdClosed", Toast.LENGTH_SHORT).show() } override fun onRewardedVideoAdFailedToLoad(errorCode: Int) { Toast.makeText(this, "onRewardedVideoAdFailedToLoad", Toast.LENGTH_SHORT).show() } override fun onRewardedVideoAdLoaded() { Toast.makeText(this, "onRewardedVideoAdLoaded", Toast.LENGTH_SHORT).show() } override fun onRewardedVideoAdOpened() { Toast.makeText(this, "onRewardedVideoAdOpened", Toast.LENGTH_SHORT).show() } override fun onRewardedVideoStarted() { Toast.makeText(this, "onRewardedVideoStarted", Toast.LENGTH_SHORT).show() } override fun onRewardedVideoCompleted() { Toast.makeText(this, "onRewardedVideoCompleted", Toast.LENGTH_SHORT).show() }
Mostrar un anuncio de vídeo bonificado
Java
if (mRewardedVideoAd.isLoaded()) { mRewardedVideoAd.show(); }
Kotlin
if (mRewardedVideoAd.isLoaded) { mRewardedVideoAd.show() }
Comprueba que el anuncio de vídeo bonificado se ha terminado de cargar antes de intentar mostrarlo. El método isLoaded()
indica si se ha procesado correctamente la solicitud de anuncio de vídeo bonificado.
Usar RewardedVideoAdListener para volver a cargar un anuncio
El método onRewardedVideoAdClosed()
de la clase RewardedVideoAdListener
es muy práctico para cargar un nuevo anuncio de vídeo bonificado después de mostrar el anterior:
Java
@Override public void onRewardedVideoAdClosed() { // Load the next rewarded video ad. loadRewardedVideoAd(); }
Kotlin
override fun onRewardedVideoAdClosed() { loadRewardedVideoAd() }
Reenviar eventos del ciclo de vida
Para reenviar eventos del ciclo de vida de la actividad principal al objeto RewardedVideoAd
, llama a los métodos resume()
, pause()
y destroy()
en los métodos onResume()
, onPause()
y onDestroy()
de la actividad principal, respectivamente.
A continuación, te presentamos un ejemplo de cómo reenviar un evento del ciclo de vida de la actividad:
Java
@Override public void onResume() { mRewardedVideoAd.resume(this); super.onResume(); } @Override public void onPause() { mRewardedVideoAd.pause(this); super.onPause(); } @Override public void onDestroy() { mRewardedVideoAd.destroy(this); super.onDestroy(); }
Kotlin
override fun onPause() { super.onPause() mRewardedVideoAd.pause(this) } override fun onResume() { super.onResume() mRewardedVideoAd.resume(this) } override fun onDestroy() { super.onDestroy() mRewardedVideoAd.destroy(this) }
Integración con Unity
Consulta Vídeos bonificados para obtener instrucciones sobre cómo integrar este tipo de vídeos en un proyecto de Unity.
Otros recursos
Ejemplos en GitHub
Tutorial en vídeo
Codelab
Pasos siguientes
Crea tu propio bloque de anuncios de vídeo bonificados en la interfaz de AdMob.
Prueba otro formato de anuncio: