Annonces avec récompense

Sélectionnez une plate-forme : Android iOS Unity Flutter

Les annonces avec récompense vous permettent de récompenser les utilisateurs qui interagissent avec des annonces vidéo, des annonces jouables et des enquêtes en leur offrant différents éléments intégrés à votre application.

Prérequis

Toujours effectuer des tests avec des annonces tests

Lorsque vous créez et testez vos applications, assurez-vous d'utiliser des annonces tests plutôt que des annonces de production. À défaut, votre compte risque d'être suspendu.

Le moyen le plus simple de charger des annonces tests consiste à utiliser notre ID de bloc d'annonces test dédié pour les annonces avec récompense Android :

ca-app-pub-3940256099942544/5224354917

Il a été spécialement configuré pour renvoyer des annonces tests pour chaque demande. Vous pouvez l'utiliser librement dans vos propres applications lors du codage, des tests et du débogage. Veillez simplement à le remplacer par votre propre ID de bloc d'annonces avant de publier votre application.

Pour en savoir plus sur le fonctionnement des annonces tests du SDK Mobile Ads, consultez Annonces tests.

Charger un objet d'annonce avec récompense

Les annonces avec récompense sont chargées en appelant la méthode statique load() sur la classe RewardedAd et en transmettant un RewardedAdLoadCallback. Cette opération est généralement effectuée dans la méthode onCreate() d'un Activity. Notez que, comme les autres rappels de chargement de format, RewardedAdLoadCallback utilise LoadAdError pour fournir des informations plus précises sur les erreurs.

Java

RewardedAd.load(
    this,
    "AD_UNIT_ID",
    new AdRequest.Builder().build(),
    new RewardedAdLoadCallback() {
      @Override
      public void onAdLoaded(@NonNull RewardedAd rewardedAd) {
        Log.d(TAG, "Ad was loaded.");
        MainActivity.this.rewardedAd = rewardedAd;
      }

      @Override
      public void onAdFailedToLoad(@NonNull LoadAdError loadAdError) {
        Log.d(TAG, loadAdError.getMessage());
        rewardedAd = null;
      }
    });

Kotlin

RewardedAd.load(
  this,
  "AD_UNIT_ID",
  AdRequest.Builder().build(),
  object : RewardedAdLoadCallback() {
    override fun onAdLoaded(ad: RewardedAd) {
      Log.d(TAG, "Ad was loaded.")
      rewardedAd = ad
    }

    override fun onAdFailedToLoad(adError: LoadAdError) {
      Log.d(TAG, adError.message)
      rewardedAd = null
    }
  },
)

Remplacez AD_UNIT_ID par l'ID de votre bloc d'annonces.

Définir FullScreenContentCallback

Le FullScreenContentCallback gère les événements liés à l'affichage de votre RewardedAd. Avant d'afficher votre RewardedAd, assurez-vous de définir le rappel comme suit :

Java

rewardedAd.setFullScreenContentCallback(
    new FullScreenContentCallback() {
      @Override
      public void onAdDismissedFullScreenContent() {
        // Called when fullscreen content is dismissed.
        Log.d(TAG, "Ad was dismissed.");
        // Don't forget to set the ad reference to null so you
        // don't show the ad a second time.
        rewardedAd = null;
      }

      @Override
      public void onAdFailedToShowFullScreenContent(AdError adError) {
        // Called when fullscreen content failed to show.
        Log.d(TAG, "Ad failed to show.");
        // Don't forget to set the ad reference to null so you
        // don't show the ad a second time.
        rewardedAd = null;
      }

      @Override
      public void onAdShowedFullScreenContent() {
        // Called when fullscreen content is shown.
        Log.d(TAG, "Ad showed fullscreen content.");
      }

      @Override
      public void onAdImpression() {
        // Called when an impression is recorded for an ad.
        Log.d(TAG, "Ad recorded an impression.");
      }

      @Override
      public void onAdClicked() {
        // Called when an ad is clicked.
        Log.d(TAG, "Ad was clicked.");
      }
    });

Kotlin

rewardedAd?.fullScreenContentCallback =
  object : FullScreenContentCallback() {
    override fun onAdDismissedFullScreenContent() {
      // Called when fullscreen content is dismissed.
      Log.d(TAG, "Ad was dismissed.")
      // Don't forget to set the ad reference to null so you
      // don't show the ad a second time.
      rewardedAd = null
    }

    override fun onAdFailedToShowFullScreenContent(adError: AdError) {
      // Called when fullscreen content failed to show.
      Log.d(TAG, "Ad failed to show.")
      // Don't forget to set the ad reference to null so you
      // don't show the ad a second time.
      rewardedAd = null
    }

    override fun onAdShowedFullScreenContent() {
      // Called when fullscreen content is shown.
      Log.d(TAG, "Ad showed fullscreen content.")
    }

    override fun onAdImpression() {
      // Called when an impression is recorded for an ad.
      Log.d(TAG, "Ad recorded an impression.")
    }

    override fun onAdClicked() {
      // Called when an ad is clicked.
      Log.d(TAG, "Ad was clicked.")
    }
  }

Diffuser l'annonce

Lorsque vous affichez une annonce avec récompense, vous utilisez un objet OnUserEarnedRewardListener pour gérer les événements de récompense.

Java

rewardedAd.show(
    MainActivity.this,
    new OnUserEarnedRewardListener() {
      @Override
      public void onUserEarnedReward(@NonNull RewardItem rewardItem) {
        Log.d(TAG, "User earned the reward.");
        // Handle the reward.
      }
    });

Kotlin

rewardedAd?.show(
  this,
  OnUserEarnedRewardListener { rewardItem ->
    Log.d(TAG, "User earned the reward.")
    // Handle the reward.
    val rewardAmount = rewardItem.amount
    val rewardType = rewardItem.type
  },
)

[Facultatif] Valider les rappels de validation côté serveur

Les applications qui nécessitent des données supplémentaires dans les rappels de validation côté serveur doivent utiliser la fonctionnalité de données personnalisées des annonces avec récompense. Toute valeur de chaîne définie sur un objet d'annonce avec récompense est transmise au paramètre de requête custom_data du rappel SSV. Si aucune valeur de données personnalisée n'est définie, la valeur du paramètre de requête custom_data ne sera pas présente dans le rappel SSV.

L'exemple de code suivant montre comment définir des données personnalisées sur un objet d'annonce avec récompense avant de demander une annonce.

Java

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

Kotlin

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

Remplacez SAMPLE_CUSTOM_DATA_STRING par vos données personnalisées.

Si vous souhaitez définir la chaîne de récompense personnalisée, vous devez le faire avant d'afficher l'annonce.

Questions fréquentes

L'appel d'initialisation est-il soumis à un délai avant expiration ?
Après 10 secondes, le SDK Google Mobile Ads appelle OnInitializationCompleteListener, même si un réseau de médiation n'a pas encore terminé l'initialisation.
Que faire si certains réseaux de médiation ne sont pas prêts lorsque je reçois le rappel d'initialisation ?

Nous vous recommandons de charger une annonce dans le rappel de OnInitializationCompleteListener. Même si un réseau de médiation n'est pas prêt, le SDK Google Mobile Ads lui demande quand même une annonce. Ainsi, si un réseau de médiation termine son initialisation après le délai d'expiration, il peut toujours répondre aux futures demandes d'annonces de cette session.

Vous pouvez continuer à interroger l'état d'initialisation de tous les adaptateurs tout au long de la session de votre application en appelant MobileAds.getInitializationStatus().

Comment savoir pourquoi un réseau de médiation spécifique n'est pas prêt ?

AdapterStatus.getDescription() décrit pourquoi un adaptateur n'est pas prêt à traiter les demandes d'annonces.

Le rappel onUserEarnedReward() est-il toujours appelé avant le rappel onAdDismissedFullScreenContent() ?

Pour les annonces Google, tous les appels onUserEarnedReward() ont lieu avant onAdDismissedFullScreenContent(). Pour les annonces diffusées via la médiation, l'ordre des rappels est déterminé par l'implémentation du SDK du réseau publicitaire tiers. Pour les SDK de réseaux publicitaires qui fournissent un seul rappel de fermeture avec des informations sur la récompense, l'adaptateur de médiation appelle onUserEarnedReward() avant onAdDismissedFullScreenContent().

Exemples sur GitHub

  • Exemple d'annonces avec récompense : Java | Kotlin

Étapes suivantes

Consultez les rubriques suivantes :