Los anuncios recompensados son aquellos que ofrecen a los usuarios la posibilidad de interactuar a cambio de recompensas en la aplicación. En esta guía, te mostramos cómo integrar anuncios recompensados de AdMob en una app de Flutter.
Haz siempre una comprobación con anuncios de prueba
Al compilar y verificar tus apps, asegúrate de usar anuncios de prueba en vez de anuncios activos en fase de producción. De lo contrario, tu cuenta podría suspenderse.
La forma más sencilla de cargar anuncios de prueba es usar nuestro ID de unidad de anuncios de prueba exclusivo para los anuncios recompensados:
Android
ca-app-pub-3940256099942544/5224354917
iOS
ca-app-pub-3940256099942544/1712485313
Las unidades de anuncios de prueba están configuradas para devolver anuncios de prueba para todas las solicitudes, y puedes utilizarlas en tus apps propias mientras realizas tus actividades de programación, prueba y depuración. Solo asegúrate de reemplazarlas por tus propios IDs de unidades de anuncios antes de publicar tu app.
Carga un anuncio
En el siguiente ejemplo, se carga un anuncio recompensado:
class RewardedExampleState extends State<RewardedExample> { RewardedAd? _rewardedAd; // TODO: replace this test ad unit with your own ad unit. final adUnitId = Platform.isAndroid ? 'ca-app-pub-3940256099942544/5224354917' : 'ca-app-pub-3940256099942544/1712485313'; /// Loads a rewarded ad. void loadAd() { RewardedAd.load( adUnitId: adUnitId, request: const AdRequest(), adLoadCallback: RewardedAdLoadCallback( // Called when an ad is successfully received. onAdLoaded: (ad) { debugPrint('$ad loaded.'); // Keep a reference to the ad so you can show it later. _rewardedAd = ad; }, // Called when an ad request failed. onAdFailedToLoad: (LoadAdError error) { debugPrint('RewardedAd failed to load: $error'); }, )); } }
Eventos de anuncios recompensados
Con FullScreenContentCallback
, puedes escuchar eventos de ciclo de vida, como cuando se muestra o se descarta el anuncio. Establece RewardedAd.fullScreenContentCallback
antes de mostrar el anuncio para recibir notificaciones de estos eventos. En este ejemplo, se implementa cada método y se registra un mensaje en la consola:
class RewardedExampleState extends State<RewardedExample> { RewardedAd? _rewardedAd; // TODO: replace this test ad unit with your own ad unit. final adUnitId = Platform.isAndroid ? 'ca-app-pub-3940256099942544/5224354917' : 'ca-app-pub-3940256099942544/1712485313'; /// Loads a rewarded ad. void loadAd() { RewardedAd.load( adUnitId: adUnitId, request: const AdRequest(), adLoadCallback: RewardedAdLoadCallback( // Called when an ad is successfully received. onAdLoaded: (ad) { ad.fullScreenContentCallback = FullScreenContentCallback( // Called when the ad showed the full screen content. onAdShowedFullScreenContent: (ad) {}, // Called when an impression occurs on the ad. onAdImpression: (ad) {}, // Called when the ad failed to show full screen content. onAdFailedToShowFullScreenContent: (ad, err) { // Dispose the ad here to free resources. ad.dispose(); }, // Called when the ad dismissed full screen content. onAdDismissedFullScreenContent: (ad) { // Dispose the ad here to free resources. ad.dispose(); }, // Called when a click is recorded for an ad. onAdClicked: (ad) {}); debugPrint('$ad loaded.'); // Keep a reference to the ad so you can show it later. _rewardedAd = ad; }, // Called when an ad request failed. onAdFailedToLoad: (LoadAdError error) { debugPrint('RewardedAd failed to load: $error'); }, )); } }
Anuncio gráfico
Un RewardedAd
se muestra como una superposición sobre todo el contenido de la app y se coloca de forma estática. Por lo tanto, no se puede agregar al árbol de widgets de Flutter. Puedes elegir cuándo mostrar el anuncio llamando a show()
.
RewardedAd.show()
toma un OnUserEarnedRewardCallback
, que se invoca cuando el usuario obtiene una recompensa. Asegúrate de implementar esta opción y recompensar al usuario por mirar el anuncio.
_rewardedAd.show(onUserEarnedReward: (AdWithoutView ad, RewardItem rewardItem) { // Reward the user for watching an ad. });
Una vez que se llama a show()
, no se puede quitar un Ad
que se muestra de esta manera de forma programática y se requiere la entrada del usuario. Un RewardedAd
solo se puede mostrar una vez. Las llamadas posteriores para mostrarlo activarán onAdFailedToShowFullScreenContent
.
Se deben descartar los anuncios a los que ya no sea necesario acceder. La práctica recomendada para saber cuándo llamar a dispose()
se basa en las devoluciones de llamada FullScreenContentCallback.onAdDismissedFullScreenContent
y FullScreenContentCallback.onAdFailedToShowFullScreenContent
.
Eso es todo. Tu app ya está lista para mostrar anuncios recompensados.