Anuncios bonificados

Requisitos

  • Tener la versión 19.7.0 del SDK de anuncios de Google para móviles o una posterior.
  • Seguir la guía de introducción para importar el SDK de anuncios de Google para móviles y actualizar el archivo de manifiesto de Android.

Comprueba 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 usar el ID del bloque de anuncios de prueba que hemos creado para los anuncios bonificados de Android:

ca-app-pub-3940256099942544/5224354917

Lo hemos configurado especialmente para devolver anuncios de prueba como respuesta de cada solicitud, y puedes usarlo para programar, probar y depurar tus propias aplicaciones. Solo tienes que sustituirlo por el ID de uno de tus bloques de anuncios antes de publicar la aplicación.

Para obtener más información sobre cómo funcionan los nuncios de prueba del SDK de anuncios para móviles, consulta la guía de anuncios de prueba.

Cargar un objeto de anuncio bonificado

Los anuncios bonificados se cargan llamando al método load() estático de la clase RewardedAd y transfiriéndolo en una RewardedAdLoadCallback. Normalmente, esto se hace con el método onCreate() de un objeto Activity. Ten en cuenta que, al igual que otras retrollamadas de carga de formato, RewardedAdLoadCallback utiliza LoadAdError para proporcionar detalles de los errores de fidelidad más alta.

Java

import com.google.android.gms.ads.rewarded.RewardedAd;

public class MainActivity extends Activity {
  private RewardedAd mRewardedAd;
  private final String TAG = "MainActivity";

  @Override
  protected void onCreate(Bundle savedInstanceState) {

    AdRequest adRequest = new AdRequest.Builder().build();

    RewardedAd.load(this, "ca-app-pub-3940256099942544/5224354917",
      adRequest, new RewardedAdLoadCallback() {
        @Override
        public void onAdFailedToLoad(@NonNull LoadAdError loadAdError) {
          // Handle the error.
          Log.d(TAG, loadAdError.getMessage());
          mRewardedAd = null;
        }

        @Override
        public void onAdLoaded(@NonNull RewardedAd rewardedAd) {
          mRewardedAd = rewardedAd;
          Log.d(TAG, "Ad was loaded.");
        }
    });
  }
}

Kotlin

class MainActivity : AppCompatActivity() {

  private var mRewardedAd: RewardedAd? = null
  private final var TAG = 'MainActivity'

  override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)

    var adRequest = AdRequest.Builder().build()

    RewardedAd.load(this,"ca-app-pub-3940256099942544/5224354917", adRequest, object : RewardedAdLoadCallback() {
      override fun onAdFailedToLoad(adError: LoadAdError) {
        Log.d(TAG, adError?.message)
        mRewardedAd = null
      }

      override fun onAdLoaded(rewardedAd: RewardedAd) {
        Log.d(TAG, "Ad was loaded.")
        mRewardedAd = rewardedAd
       }
    })
  }
}

Definir la FullScreenContentCallback

FullScreenContentCallback gestiona eventos relacionados con la visualización de tu RewardedAd. Antes de mostrar el RewardedAd, configura la retrollamada de la siguiente manera:

Java

mRewardedAd.setFullScreenContentCallback(new FullScreenContentCallback() {
  @Override
  public void onAdShowedFullScreenContent() {
    // Called when ad is shown.
    Log.d(TAG, "Ad was shown.");
  }

  @Override
  public void onAdFailedToShowFullScreenContent(AdError adError) {
    // Called when ad fails to show.
    Log.d(TAG, "Ad failed to show.");
  }

  @Override
  public void onAdDismissedFullScreenContent() {
    // Called when ad is dismissed.
    // Set the ad reference to null so you don't show the ad a second time.
    Log.d(TAG, "Ad was dismissed.");
    mRewardedAd = null;
  }
});

Kotlin

mRewardedAd?.fullScreenContentCallback = object: FullScreenContentCallback() {
  override fun onAdShowedFullScreenContent() {
    // Called when ad is shown.
    Log.d(TAG, "Ad was shown.")
  }

  override fun onAdFailedToShowFullScreenContent(adError: AdError?) {
    // Called when ad fails to show.
    Log.d(TAG, "Ad failed to show.")
  }

  override fun onAdDismissedFullScreenContent() {
    // Called when ad is dismissed.
    // Set the ad reference to null so you don't show the ad a second time.
    Log.d(TAG, "Ad was dismissed.")
    mRewardedAd = null
  }
}

Mostrar anuncios

Cuando muestras un anuncio bonificado, usas un objeto OnUserEarnedRewardListener para gestionar los eventos de bonificación.

Java

if (mRewardedAd != null) {
  Activity activityContext = MainActivity.this;
  mRewardedAd.show(activityContext, new OnUserEarnedRewardListener() {
    @Override
    public void onUserEarnedReward(@NonNull RewardItem rewardItem) {
      // Handle the reward.
      Log.d(TAG, "The user earned the reward.");
      int rewardAmount = rewardItem.getAmount();
      String rewardType = rewardItem.getType();
    }
  });
} else {
  Log.d(TAG, "The rewarded ad wasn't ready yet.");
}

Kotlin

if (mRewardedAd != null) {
  mRewardedAd?.show(this, OnUserEarnedRewardListener() {
    fun onUserEarnedReward(rewardItem: RewardItem) {
      var rewardAmount = rewardItem.getReward()
      var rewardType = rewardItem.getType()
      Log.d(TAG, "User earned the reward.")
    }
  })
} else {
  Log.d(TAG, "The rewarded ad wasn't ready yet.")
}

Preguntas frecuentes

¿Las llamadas de inicialización tienen un tiempo de espera determinado?
Después de 10 segundos, el SDK de anuncios de Google para móviles invoca el elemento OnInitializationCompleteListener aunque la red de mediación aún no haya completado la inicialización.
¿Qué ocurre si una red de mediación no está lista cuando recibo la retrollamada de inicialización?

Te recomendamos que cargues los anuncios en la retrollamada de OnInitializationCompleteListener. Aunque la red de mediación no esté lista, el SDK de anuncios de Google para móviles seguirá solicitándole el anuncio. Por lo tanto, aunque una red de mediación complete la inicialización tras finalizar el tiempo de espera, podrá servir solicitudes de anuncio más adelante en esa misma sesión.

Puedes seguir consultando el estado de la inicialización de todos los adaptadores a través de la sesión de tu aplicación. Solo tienes que llamar a MobileAds.getInitializationStatus().

¿Cómo puedo saber por qué una red de mediación concreta no está lista?

La propiedad AdapterStatus.getDescription() describe por qué un adaptador no está listo para servir solicitudes de anuncio.