Hoy vamos a implementar un anuncio Interstitial Bonificado con Admob en Flutter.
Lo primero que haremos es crear nuestro componente llamado rewarded_interstitial.dart
import 'dart:async'; import 'package:flutter/material.dart'; import 'package:google_mobile_ads/google_mobile_ads.dart'; class AdRewardedInterstitial { static RewardedInterstitialAd? _rewardedAd; static Future<bool> initialize() async { return await _loadRewardedInterstitialAd(); } static Future<bool> _loadRewardedInterstitialAd() async { Completer<bool> completer = Completer<bool>(); RewardedInterstitialAd.load( adUnitId: AdHelper.rewardedAdUnitId, request: AdRequest(), rewardedInterstitialAdLoadCallback: RewardedInterstitialAdLoadCallback( onAdLoaded: (RewardedInterstitialAd ad) { print('Rewarded Ad loaded'); _rewardedAd = ad; completer.complete( true); // Completa el Future con true si se carga el anuncio }, onAdFailedToLoad: (LoadAdError error) { print('Rewarded Ad failed to load: $error'); completer.complete( false); // Completa el Future con false si falla la carga del anuncio }, ), ); return completer .future; // Retorna el Future que será completado en el callback } static void showRewardedInterstitialAd( {required Function onReward, required Function onDimiss}) { if (_rewardedAd == null) { print('Rewarded Ad not loaded yet.'); //onDimiss(); onReward(-1); return; } _rewardedAd!.fullScreenContentCallback = FullScreenContentCallback( onAdDismissedFullScreenContent: (Ad ad) { print('Rewarded Ad dismissed'); onDimiss(); _loadRewardedInterstitialAd(); // Carga un nuevo anuncio después de que el actual se haya mostrado. }, ); _rewardedAd!.show( onUserEarnedReward: (AdWithoutView ad, RewardItem reward) { print('User earned reward: ${reward.amount}'); onReward(reward .amount); // Llama al callback cuando el usuario gane una recompensa. }, ); } static void dispose() { _rewardedAd?.dispose(); } } class AdHelper { static String rewardedAdUnitId = "ca-app-pub-3940256099942544/5354046379" }
Id de prueba: ca-app-pub-3940256099942544/5354046379
He añadido el ID de prueba, podremos añadir el que necesitemos o hacer una clase que según sea iOS/Android o test nos cargue el ID correspondiente:
import 'dart:io'; const test = true; String getIdRewardedInterstitial() { var adID = "ca-app-pub-3940256099942544/5354046379"; if (Platform.isAndroid) { if (!test) { //Anuncios reales adID = "tu_id_anuncio_interstitial_bonificado_android"; } else { //Anuncios de test adID = "ca-app-pub-3940256099942544/5354046379"; } } else if (Platform.isIOS) { if (!test) { //Anuncios reales adID = "tu_id_anuncio_interstitial_bonificado_iOS"; } else { //Anuncios de test adID = "ca-app-pub-3940256099942544/5354046379"; } } return adID; }
Y ahora para utilizar nuestro anuncio haremos esto:
() async { await AdRewardedInterstitial.initialize(); AdRewardedInterstitial.showRewardedInterstitialAd( onReward: (value) { print('User was rewarded: $value'); }, onDimiss: () { print('User dismissed the ad.'); }, ); }();
Ingeniero en Informática, me encanta crear cosas o arreglarlas y darles una nueva vida. Escritor y poeta. Más de 20 APPs publicadas y un libro en Amazon.