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, Investigador, 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.