Requisitos
- Tener la versión 17.2.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.
Crear un objeto de anuncio bonificado
Los anuncios bonificados se solicitan y se muestran mediante los objetos RewardedAd
. El primer paso es crear una instancia de RewardedAd
. Puedes ver cómo se hace con el método onCreate()
en un objeto Activity
en el siguiente fragmento de código:
Java
import com.google.android.gms.ads.rewarded.RewardedAd; public class MainActivity extends Activity { private RewardedAd rewardedAd; @Override protected void onCreate(Bundle savedInstanceState) { ... rewardedAd = new RewardedAd(this, "ca-app-pub-3940256099942544/5224354917"); } }
Kotlin
import com.google.android.gms.ads.rewarded.RewardedAd class MainActivity : Activity() { private lateinit var rewardedAd: RewardedAd override fun onCreate(savedInstanceState:Bundle) { ... rewardedAd = RewardedAd(this, "ca-app-pub-3940256099942544/5224354917") } }
El constructor necesita los siguientes argumentos:
- Un contexto de
Activity
. - El ID del bloque de anuncios que se va a usar para cargar el anuncio bonificado.
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 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 anuncios de prueba del SDK de anuncios para móviles, consulta Anuncios de prueba.
Cargar anuncios
Para cargar un anuncio bonificado, haz una llamada al método loadAd()
del objeto RewardedAd
. Este método requiere utilizar instancias de AdRequest
y RewardedAdLoadCallback
como argumentos.
Java
import com.google.android.gms.ads.rewarded.RewardedAd; public class MainActivity extends Activity { private RewardedAd rewardedAd; @Override protected void onCreate(Bundle savedInstanceState) { ... rewardedAd = new RewardedAd(this, "ca-app-pub-3940256099942544/5224354917"); RewardedAdLoadCallback adLoadCallback = new RewardedAdLoadCallback() { @Override public void onRewardedAdLoaded() { // Ad successfully loaded. } @Override public void onRewardedAdFailedToLoad(LoadAdError adError) { // Ad failed to load. } }; rewardedAd.loadAd(new AdRequest.Builder().build(), adLoadCallback); } }
Kotlin
import com.google.android.gms.ads.rewarded.RewardedAd class MainActivity : Activity() { private lateinit var rewardedAd: RewardedAd override fun onCreate(savedInstanceState:Bundle) { rewardedAd = RewardedAd(this, "ca-app-pub-3940256099942544/5224354917") val adLoadCallback = object: RewardedAdLoadCallback() { fun onRewardedAdLoaded() { // Ad successfully loaded. } fun onRewardedAdFailedToLoad(adError: LoadAdError) { // Ad failed to load. } } rewardedAd.loadAd(AdRequest.Builder().build(), adLoadCallback) } }
Los métodos onRewardedAdLoaded()
y onRewardedAdFailedToLoad()
de RewardedAdLoadCallback
proporcionan el resultado de la operación de carga de anuncios.
Métodos anulables | |
---|---|
onRewardedAdLoaded() |
Este método se ejecuta cuando un anuncio termina de cargarse. |
onRewardedAdFailedToLoad() |
Este método se invoca cuando un anuncio no puede cargarse. Incluye un parámetro de tipo LoadAdError que indica el tipo de error que se ha producido. Si quieres obtener más información, consulta la documentación sobre cómo depurar errores de carga de anuncios.
|
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.
Si quieres mostrar un RewardedAd
, utiliza el método isLoaded()
para verificar que ha terminado de cargarse y haz una llamada a show()
. El método show()
requiere que se usen instancias Activity
y RewardedAdCallback
como argumentos. La instancia Activity
debe ser la actividad desde la que se presenta el anuncio bonificado.
El anuncio bonificado del ejemplo de código anterior podría mostrarse en el objeto OnClickListener
de un botón de esta manera:
Java
myButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (rewardedAd.isLoaded()) { Activity activityContext = MainActivity.this RewardedAdCallback adCallback = new RewardedAdCallback() { @Override public void onRewardedAdOpened() { // Ad opened. } @Override public void onRewardedAdClosed() { // Ad closed. } @Override public void onUserEarnedReward(@NonNull RewardItem reward) { // User earned reward. } @Override public void onRewardedAdFailedToShow(AdError adError) { // Ad failed to display. } }; rewardedAd.show(activityContext, adCallback); } else { Log.d("TAG", "The rewarded ad wasn't loaded yet."); } } });
Kotlin
myButton.setOnClickListener { if (rewardedAd.isLoaded) { val activityContext: Activity = this@MainActivity val adCallback = object: RewardedAdCallback() { override fun onRewardedAdOpened() { // Ad opened. } override fun onRewardedAdClosed() { // Ad closed. } override fun onUserEarnedReward(@NonNull reward: RewardItem) { // User earned reward. } override fun onRewardedAdFailedToShow(adError: AdError) { // Ad failed to display. } } rewardedAd.show(activityContext, adCallback) } else { Log.d("TAG", "The rewarded ad wasn't loaded yet.") } }
Recibir notificaciones de eventos de anuncio
El objeto RewardedAdCallback
proporcionado al método show()
recibe notificaciones de los eventos de anuncios bonificados. Cada uno de los métodos anulables de RewardedAdCallback
se corresponde con un evento del ciclo de vida de un anuncio bonificado. Por ejemplo, el método onUserEarnedReward()
es el lugar perfecto para ofrecer al usuario su recompensa. A continuación te facilitamos más detalles sobre cada método de evento de anuncio.
Métodos anulables | |
---|---|
onRewardedAdOpened() |
Este método se invoca cuando el anuncio mostrado ocupa toda la pantalla del dispositivo. |
onRewardedAdClosed() |
Este método 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 ha detenido la salida de audio o el bucle del juego, este es un buen lugar para reanudarlos. |
onUserEarnedReward()
|
Este método se invoca cuando debe recompensarse al usuario por interactuar con el anuncio. Puedes acceder a los detalles de la recompensa que se han configurado en tu bloque de anuncios a través de los métodos getType() y getAmount() del parámetro RewardItem .
|
onRewardedAdFailedToShow()
|
Este método se invoca cuando un anuncio no puede mostrarse. Incluye un parámetro adError que indica el tipo de error que se ha producido.
Los valores posibles del código de error (adError.getCode() ) son constantes que se especifican en la clase RewardedAdCallback .
|
Usar RewardedAdCallback 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, este objeto no podrá usarse para cargar otro anuncio de este tipo. Para solicitar otro anuncio bonificado, deberás crear otro objeto RewardedAd
.
Te recomendamos que cargues otro anuncio bonificado en el método onRewardedAdClosed()
de RewardedAdCallback
, de forma que el siguiente anuncio de este tipo empiece a cargarse en cuanto el anterior se haya cerrado, tal como se muestra a continuación:
Java
public RewardedAd createAndLoadRewardedAd() { RewardedAd rewardedAd = new RewardedAd(this, "ca-app-pub-3940256099942544/5224354917"); RewardedAdLoadCallback adLoadCallback = new RewardedAdLoadCallback() { @Override public void onRewardedAdLoaded() { // Ad successfully loaded. } @Override public void onRewardedAdFailedToLoad(LoadAdError adError) { // Ad failed to load. } }; rewardedAd.loadAd(new AdRequest.Builder().build(), adLoadCallback); return rewardedAd; } @Override public void onRewardedAdClosed() { this.rewardedAd = createAndLoadRewardedAd(); }
Kotlin
fun createAndLoadRewardedAd(): RewardedAd { val rewardedAd = RewardedAd(this, "ca-app-pub-3940256099942544/5224354917") val adLoadCallback = object: RewardedAdLoadCallback() { override fun onRewardedAdLoaded() { // Ad successfully loaded. } override fun onRewardedAdFailedToLoad(adError: LoadAdError) { // Ad failed to load. } } rewardedAd.loadAd(AdRequest.Builder().build(), adLoadCallback) return rewardedAd } fun onRewardedAdClosed() { this.rewardedAd = 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:
Java
package ... import com.google.android.gms.ads.AdRequest; import com.google.android.gms.ads.rewarded.RewardedAd; public class MainActivity extends Activity { private RewardedAd gameOverRewardedAd; private RewardedAd extraCoinsRewardedAd; @Override protected void onCreate(Bundle savedInstanceState) { ... gameOverRewardedAd = createAndLoadRewardedAd( "ca-app-pub-3940256099942544/5224354917"); extraCoinsRewardedAd = createAndLoadRewardedAd( "ca-app-pub-3940256099942544/5224354917"); } public RewardedAd createAndLoadRewardedAd(String adUnitId) { RewardedAd rewardedAd = new RewardedAd(this, adUnitId); RewardedAdLoadCallback adLoadCallback = new RewardedAdLoadCallback() { @Override public void onRewardedAdLoaded() { // Ad successfully loaded. } @Override public void onRewardedAdFailedToLoad(LoadAdError adError) { // Ad failed to load. } }; rewardedAd.loadAd(new AdRequest.Builder().build(), adLoadCallback); return rewardedAd; } }
Kotlin
import com.google.android.gms.ads.AdRequest import com.google.android.gms.ads.rewarded.RewardedAd class MainActivity: Activity() { private lateinit var gameOverRewardedAd: RewardedAd private lateinit var extraCoinsRewardedAd: RewardedAd override fun onCreate(savedInstanceState:Bundle) { ... gameOverRewardedAd = createAndLoadRewardedAd( "ca-app-pub-3940256099942544/5224354917") extraCoinsRewardedAd = createAndLoadRewardedAd( "ca-app-pub-3940256099942544/5224354917") } fun createAndLoadRewardedAd(adUnitId:String): RewardedAd { val rewardedAd = RewardedAd(this, adUnitId) val adLoadCallback = object: RewardedAdLoadCallback() { override fun onRewardedAdLoaded() { // Ad successfully loaded. } override fun onRewardedAdFailedToLoad(adError: LoadAdError) { // Ad failed to load. } } rewardedAd.loadAd(AdRequest.Builder().build(), adLoadCallback) return rewardedAd } }
Preguntas frecuentes
- ¿Puedo obtener detalles de la bonificación del objeto
RewardedAd
? - Sí. Si necesitas conocer el valor de la bonificación antes de que se realice la retrollamada a
onUserEarnedReward()
, puedes consultar el métodogetRewardItem()
deRewardedAd
una vez que se haya cargado el anuncio. - ¿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
. Incluso si 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.
Pasos siguientes
Crea tu propio bloque de anuncios de vídeo bonificados en la interfaz de AdMob.
Prueba otro formato de anuncio: