Charger une seule annonce interstitielle avec récompense

Les annonces interstitielles avec récompense sont un format qui vous permet de proposer des récompenses pour les annonces diffusées automatiquement lors des transitions naturelles dans les applications. Contrairement aux annonces avec récompense, les utilisateurs ne sont pas obligés de choisir de regarder une annonce interstitielle avec récompense. Pour en savoir plus, consultez les consignes concernant les interstitiels avec récompense.

Ce guide explique comment intégrer des annonces interstitielles avec récompense dans une application Android.

Avant de commencer

Avant de continuer, procédez comme suit :

  • Configurez GMA Next-Gen SDK.
  • Utilisez l'ID de bloc d'annonces interstitielles avec récompense de test ca-app-pub-3940256099942544/5354046379.
    • Lorsque vous créez et testez votre application, assurez-vous d'utiliser des annonces tests plutôt que des annonces de production. Si vous n'utilisez pas l'ID du bloc d'annonces de test, Google peut suspendre votre compte.
    • Avant de publier votre application, remplacez cet ID par l'ID de votre bloc d'annonces.
    • Pour en savoir plus sur les annonces tests GMA Next-Gen SDK, consultez Activer les annonces tests.

Charger une annonce

L'exemple suivant charge une seule annonce :

Kotlin

// Load ads after you initialize MobileAds.
RewardedInterstitialAd.load(
  AdRequest.Builder(adUnitId).build(),
  object : AdLoadCallback<RewardedInterstitialAd> {
    override fun onAdLoaded(ad: RewardedInterstitialAd) {
      // Rewarded interstitial ad loaded.
      rewardedInterstitialAd = ad
    }

    override fun onAdFailedToLoad(adError: LoadAdError) {
      // Rewarded interstitial ad failed to load.
      Log.e(TAG, "Rewarded interstitial ad failed to load: ${adError.message}")
      rewardedInterstitialAd = null
    }
  },
)

Java

// Load ads after you initialize MobileAds.
RewardedInterstitialAd.load(
    new AdRequest.Builder(adUnitId).build(),
    new AdLoadCallback<RewardedInterstitialAd>() {
      @Override
      public void onAdLoaded(@NonNull RewardedInterstitialAd ad) {
        // Rewarded interstitial ad loaded.
        rewardedInterstitialAd = ad;
      }

      @Override
      public void onAdFailedToLoad(@NonNull LoadAdError adError) {
        // Rewarded interstitial ad failed to load.
        Log.e(TAG, "Rewarded interstitial ad failed to load: " + adError.getMessage());
        rewardedInterstitialAd = null;
      }
    });

Pour les tests, utilisez l'ID de bloc d'annonces de test suivant : ca-app-pub-3940256099942544/5354046379.

Diffuser l'annonce

Pour afficher une annonce interstitielle avec récompense, appelez la méthode show. Pour gérer les événements avec récompense, utilisez un objet OnUserEarnedRewardListener.

L'exemple suivant affiche l'annonce :

Kotlin

private fun showAd(rewardedInterstitialAd: RewardedInterstitialAd, activity: Activity) {
  // Show the ad.
  rewardedInterstitialAd.show(
    activity,
    object : OnUserEarnedRewardListener {
      override fun onUserEarnedReward(rewardItem: RewardItem) {
        // User earned the reward.
        val rewardAmount = rewardItem.amount
        val rewardType = rewardItem.type
      }
    },
  )
}

Java

private void showAd(RewardedInterstitialAd rewardedInterstitialAd, Activity activity) {
  // Show the ad.
  rewardedInterstitialAd.show(
      activity,
      new OnUserEarnedRewardListener() {
        @Override
        public void onUserEarnedReward(@NonNull RewardItem rewardItem) {
          // User earned the reward.
          int rewardAmount = rewardItem.getAmount();
          String rewardType = rewardItem.getType();
        }
      });
}

Écouter les événements d'annonce

Avant de diffuser l'annonce, écoutez les événements de cycle de vie de l'annonce. L'exemple suivant enregistre des rappels pour les événements d'annonce :

Kotlin

private fun listenToAdEvents() {
  // Listen for ad events.
  val ad = rewardedInterstitialAd
  if (ad == null) {
    Log.e(TAG, "Rewarded interstitial ad is not ready yet.")
    return
  }

  ad.adEventCallback =
    object : RewardedInterstitialAdEventCallback {
      override fun onAdShowedFullScreenContent() {
        // Rewarded interstitial ad did show.
      }

      override fun onAdDismissedFullScreenContent() {
        // Rewarded interstitial ad did dismiss.
        rewardedInterstitialAd = null
      }

      override fun onAdFailedToShowFullScreenContent(
        fullScreenContentError: FullScreenContentError
      ) {
        // Rewarded interstitial ad failed to show.
        Log.e(TAG, "Rewarded interstitial ad failed to show: ${fullScreenContentError.message}")
      }

      override fun onAdImpression() {
        // Rewarded interstitial ad did record an impression.
      }

      override fun onAdClicked() {
        // Rewarded interstitial ad did record a click.
      }
    }
}

Java

private void listenToAdEvents() {
  // Listen for ad events.
  if (rewardedInterstitialAd == null) {
    Log.e(TAG, "Rewarded interstitial ad is not ready yet.");
    return;
  }

  rewardedInterstitialAd.setAdEventCallback(
      new RewardedInterstitialAdEventCallback() {
        @Override
        public void onAdShowedFullScreenContent() {
          // Rewarded interstitial ad did show.
        }

        @Override
        public void onAdDismissedFullScreenContent() {
          // Rewarded interstitial ad did dismiss.
          rewardedInterstitialAd = null;
        }

        @Override
        public void onAdFailedToShowFullScreenContent(
            @NonNull FullScreenContentError fullScreenContentError) {
          // Rewarded interstitial ad failed to show.
          Log.e(
              TAG,
              "Rewarded interstitial ad failed to show: " + fullScreenContentError.getMessage());
        }

        @Override
        public void onAdImpression() {
          // Rewarded interstitial ad did record an impression.
        }

        @Override
        public void onAdClicked() {
          // Rewarded interstitial ad did record a click.
        }
      });
}

Facultatif : Valider les rappels de validation côté serveur (SSV)

Pour transmettre le contexte de l'utilisateur et de l'application dans les rappels de validation côté serveur, définissez les options de validation sur l'objet d'annonce avant de diffuser l'annonce. Étant donné que les rappels de validation côté serveur arrivent sur votre serveur depuis Google sans état de session, associez les chaînes facultatives suivantes. Google transmet ces chaînes sans les modifier en tant que paramètres de requête signés dans le rappel de validation côté serveur :

  • Paramètre de requête user_id : identifie l'utilisateur à créditer, par exemple un ID de compte interne.
  • Paramètre de requête custom_data : contient les données de l'application, telles que l'emplacement de la récompense, le niveau du jeu ou un nonce généré par le serveur.

Si vous ne définissez pas de valeur, Google omet ce paramètre de requête du rappel SSV.

L'exemple suivant définit des données personnalisées sur un objet d'annonce avant de l'afficher :

Kotlin

RewardedInterstitialAd.load(
  context,
  AD_UNIT_ID,
  AdRequest.Builder().build(),
  object : RewardedInterstitialAdLoadCallback() {
    override fun onAdLoaded(ad: RewardedInterstitialAd) {
      rewardedInterstitialAd = ad
      val options =
        ServerSideVerificationOptions.Builder().setCustomData("SAMPLE_CUSTOM_DATA_STRING").build()
      rewardedInterstitialAd?.setServerSideVerificationOptions(options)
    }
  },
)

Java

RewardedInterstitialAd.load(
    context,
    AD_UNIT_ID,
    new AdRequest.Builder().build(),
    new RewardedInterstitialAdLoadCallback() {
      @Override
      public void onAdLoaded(RewardedInterstitialAd ad) {
        rewardedInterstitialAd = ad;
        ServerSideVerificationOptions options =
            new ServerSideVerificationOptions.Builder()
                .setCustomData("SAMPLE_CUSTOM_DATA_STRING")
                .build();
        rewardedInterstitialAd.setServerSideVerificationOptions(options);
      }
    });

Remplacez SAMPLE_CUSTOM_DATA_STRING par vos données personnalisées.

Point clé : Le paramètre de requête custom_data est encodé en pourcentage. Avant d'analyser la valeur, décodez l'URL de la chaîne sur votre serveur et vérifiez la signature de rappel avant de faire confiance aux paramètres de requête user_id ou custom_data.