Anuncio intersticial recompensado (beta)

Los anuncios intersticiales recompensados son un tipo de formato de anuncio incentivado que te permite ofrecer recompensas por los anuncios que aparecen automáticamente durante las transiciones naturales de la aplicación. A diferencia de los anuncios recompensados, no es necesario que los usuarios acepten ver un anuncio intersticial recompensado. En esta guía, se muestra cómo integrar anuncios intersticiales recompensados de AdMob en una app de Flutter.

Requisitos previos

  • Complemento de Flutter 1.1.0 o una versión posterior
  • Completa Comenzar. Tu app de Flutter ya debería tener importado el complemento de Google Mobile Ads para Flutter.

Siempre realiza pruebas con anuncios de prueba

Cuando compiles y pruebes tus apps, asegúrate de usar anuncios de prueba en lugar de anuncios publicados de producción. De lo contrario, podría suspenderse tu cuenta.

La manera más fácil de cargar anuncios de prueba es usar nuestro ID de unidad de anuncios de prueba exclusivo para los anuncios intersticiales recompensados:

Android

ca-app-pub-3940256099942544/5354046379

iOS

ca-app-pub-3940256099942544/6978759866

Las unidades de anuncios de prueba están configuradas para mostrar anuncios de prueba en cada solicitud, y puedes usarlas en tus propias apps mientras codificas, pruebas y depuras. Solo asegúrate de reemplazarlos por tus propios IDs de unidad de anuncios antes de publicar la app.

Carga un anuncio

En el siguiente ejemplo, se carga un anuncio intersticial recompensado:

class RewardedInterstitialExampleState extends State<RewardedInterstitialExample> {
  RewardedInterstitialAd? _rewardeInterstitialdAd;

  // TODO: replace this test ad unit with your own ad unit.
  final adUnitId = Platform.isAndroid
    ? 'ca-app-pub-3940256099942544/5354046379'
    : 'ca-app-pub-3940256099942544/6978759866';

  /// Loads a rewarded ad.
  void loadAd() {
    RewardedInterstitialAd.load(
        adUnitId: adUnitId,
        adRequest: const AdRequest(),
        adLoadCallback: RewardedInterstitialAdLoadCallback(
          // Called when an ad is successfully received.
          onAdLoaded: (ad) {
            debugPrint('$ad loaded.');
            // Keep a reference to the ad so you can show it later.
            _rewardedInterstitialAd = ad;
          },
          // Called when an ad request failed.
          onAdFailedToLoad: (LoadAdError error) {
            debugPrint('RewardedInterstitialAd failed to load: $error');
          },
        ));
  }
}

Eventos de anuncios intersticiales recompensados

Con el uso de FullScreenContentCallback, puedes detectar eventos del ciclo de vida, como cuando se muestra o se descarta el anuncio. Establece RewardedInterstitialAd.fullScreenContentCallback antes de mostrar el anuncio para recibir notificaciones sobre estos eventos. En este ejemplo, se implementa cada método y se registra un mensaje en la consola:

class RewardedInterstitialExampleState extends State<RewardedInterstitialExample> {
  RewardedInterstitialAd? _rewardedInterstitialAd;

  // TODO: replace this test ad unit with your own ad unit.
  final adUnitId = Platform.isAndroid
    ? 'ca-app-pub-3940256099942544/5354046379'
    : 'ca-app-pub-3940256099942544/6978759866';

  /// Loads a rewarded ad.
  void loadAd() {
    RewardedInterstitialAd.load(
        adUnitId: adUnitId,
        adRequest: const AdRequest(),
        adLoadCallback: RewardedInterstitialAdLoadCallback(
          // 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.
            _rewardedInterstitialAd = ad;
          },
          // Called when an ad request failed.
          onAdFailedToLoad: (LoadAdError error) {
            debugprint('RewardedInterstitialAd failed to load: $error');
          },
        ));
  }
}

Anuncio gráfico

Un RewardedInterstitialAd se muestra como una superposición sobre todo el contenido de la app y se coloca de forma estática, por lo que no se puede agregar al árbol de widgets de Flutter. Para elegir cuándo mostrar el anuncio, llama a show(). RewardedInterstitialAd.show() toma un OnUserEarnedRewardCallback, que se invoca cuando el usuario gana una recompensa. Asegúrate de implementar esta función y recompensa al usuario por mirar un anuncio.

_rewardedInterstitialAd.show(onUserEarnedReward: (AdWithoutView ad, RewardItem rewardItem) {
  // Reward the user for watching an ad.
});

Una vez que se llama a show(), un Ad que se muestra de esta manera no se puede quitar de forma programática y requiere la entrada del usuario. Un RewardedInterstitialAd solo se puede mostrar una vez. Las llamadas posteriores a la función show activarán onAdFailedToShowFullScreenContent.

Un anuncio se debe eliminar cuando ya no se necesita acceder a él. La práctica recomendada para llamar a dispose() es en las devoluciones de llamadas FullScreenContentCallback.onAdDismissedFullScreenContent y FullScreenContentCallback.onAdFailedToShowFullScreenContent.

Eso es todo. Tu app ya está lista para mostrar anuncios intersticiales recompensados.

Ejemplo completo en GitHub

Anuncio intersticial recompensado