Comparta sus comentarios y ayúdenos a definir la hoja de ruta del SDK de anuncios de Google para dispositivos móviles. Responda la Encuesta anual del SDK de anuncios de Google para dispositivos móviles de 2023 antes del cierre del 5 de mayo de 2023.

Anuncios de vídeo bonificados (API anteriores)

Organízate con las colecciones Guarda y clasifica el contenido según tus preferencias.

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

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

  • Aplicación con vídeo bonificado de muestra: Java | Kotlin

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: