Anuncios intersticiales recompensados

Selecciona la plataforma: Android iOS Unity Flutter

Los anuncios intersticiales recompensados son un tipo de formato de anuncio incentivado que te permite ofrecer recompensas por anuncios que aparecen automáticamente en las transiciones naturales de la aplicación. A diferencia de los anuncios recompensados, no se requiere que los usuarios habiliten ninguna función para ver anuncios intersticiales recompensados. En esta guía, te mostramos cómo integrar anuncios intersticiales recompensados de AdMob en una app de Flutter.

Requisitos previos

  • Complemento de Flutter 1.1.0 o posterior
  • Completar la Introducción Tu app de Flutter ya debería tener importado el complemento de anuncios para dispositivos móviles de Google para 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 intersticiales recompensados:

Android

ca-app-pub-3940256099942544/5354046379

iOS

ca-app-pub-3940256099942544/6978759866

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 unidad de anuncios antes de publicar tu app.

Carga un anuncio

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

RewardedInterstitialAd.load(
  adUnitId: "_adUnitId",
  request: const AdRequest(),
  rewardedInterstitialAdLoadCallback: RewardedInterstitialAdLoadCallback(
    onAdLoaded: (RewardedInterstitialAd ad) {
      // Called when an ad is successfully received.
      debugPrint('Ad was loaded.');
      // Keep a reference to the ad so you can show it later.
      _rewardedInterstitialAd = ad;
    },
    onAdFailedToLoad: (LoadAdError error) {
      // Called when an ad request failed.
      debugPrint('Ad failed to load with error: $error');
    },
  ),
);

Reemplaza _adUnitId por tu propio ID de unidad de anuncios.

Eventos de anuncios intersticiales recompensados

Con FullScreenContentCallback, puedes escuchar eventos de 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.

ad.fullScreenContentCallback = FullScreenContentCallback(
  onAdShowedFullScreenContent: (ad) {
    // Called when the ad showed the full screen content.
    debugPrint('Ad showed full screen content.');
  },
  onAdFailedToShowFullScreenContent: (ad, err) {
    // Called when the ad failed to show full screen content.
    debugPrint('Ad failed to show full screen content with error: $err');
    // Dispose the ad here to free resources.
    ad.dispose();
  },
  onAdDismissedFullScreenContent: (ad) {
    // Called when the ad dismissed full screen content.
    debugPrint('Ad was dismissed.');
    // Dispose the ad here to free resources.
    ad.dispose();
  },
  onAdImpression: (ad) {
    // Called when an impression occurs on the ad.
    debugPrint('Ad recorded an impression.');
  },
  onAdClicked: (ad) {
    // Called when a click is recorded for an ad.
    debugPrint('Ad was clicked.');
  },
);

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 tanto, no se puede agregar al árbol de widgets de Flutter. Puedes elegir cuándo mostrar el anuncio llamando a show(). RewardedInterstitialAd.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.

_rewardedInterstitialAd?.show(
  onUserEarnedReward: (AdWithoutView view, RewardItem rewardItem) {
    debugPrint('Reward amount: ${rewardItem.amount}');
  },
);

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 RewardedInterstitialAd 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.

[Opcional] Valida las devoluciones de llamada de verificación del servidor (SSV)

Las apps que requieren datos adicionales en las devoluciones de llamada de verificación del servidor deberían usar la función de datos personalizados de los anuncios recompensados. Todos los valores de cadena establecidos en un objeto de anuncio recompensado se pasan al parámetro de consulta custom_data de la devolución de llamada de SSV. Si no se establece ningún valor de datos personalizados, el valor del parámetro de consulta custom_data no estará presente en la devolución de llamada de SSV.

En la siguiente muestra de código, se muestra cómo establecer las opciones de SSV después de que se carga el anuncio intersticial recompensado.

RewardedInterstitialAd.load(
  adUnitId: "_adUnitId",
  request: AdRequest(),
  rewardedInterstitialAdLoadCallback: RewardedInterstitialAdLoadCallback(
    onAdLoaded: (ad) {
      ServerSideVerificationOptions _options =
          ServerSideVerificationOptions(
              customData: 'SAMPLE_CUSTOM_DATA_STRING');
      ad.setServerSideOptions(_options);
      _rewardedInterstitialAd = ad;
    },
    onAdFailedToLoad: (error) {},
  ),
);

Reemplaza SAMPLE_CUSTOM_DATA_STRING por tus datos personalizados.

Ejemplo completo en GitHub

Intersticiales recompensados