Annonces avec récompense


Les annonces avec récompense permettent aux utilisateurs d'interagir avec elles en échange pour obtenir des récompenses dans l'application. Ce guide vous explique comment intégrer des annonces avec récompense Applications Android et iOS utilisant le SDK Google Mobile Ads pour C++

Lisez des témoignages de clients: étude de cas 1, étude de cas 2.

Prérequis

Toujours tester 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é avec récompense, qui varient selon la plate-forme de l'appareil:

  • Android : ca-app-pub-3940256099942544/5224354917
  • iOS : ca-app-pub-3940256099942544/1712485313

Ils ont été spécialement configurés pour renvoyer des annonces tests pour chaque demande. vous êtes libre de l’utiliser dans vos propres applications lors du codage, des tests et du débogage. Veillez simplement à le remplacer par l'ID de votre propre bloc d'annonces avant de publier votre l'application.

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

Implémentation

Voici les principales étapes à suivre pour intégrer des annonces avec récompense:

  1. Chargez une annonce.
  2. Demandez à recevoir des rappels.
  3. Affichez l'annonce et gérez l'événement lié à la récompense.

Configurer un RewardedAd

Les annonces avec récompense s'affichent dans des objets RewardedAd. La première étape vers intégrer des annonces avec récompense dans votre application consiste à créer et initialiser une instance sur RewardedAd.

  1. Ajoutez l'en-tête suivant au code C++ de votre application:

     #include "firebase/gma/rewarded_ad.h"
    

  2. Déclarez et instanciez un objet RewardedAd:

     firebase::gma::RewardedAd* rewarded_ad;
     rewarded_ad = new firebase::gma::RewardedAd();
    

  3. Initialisez l'instance RewardedAd à l'aide de la conversion de votre vue parente sur un Type AdParent. La vue parent est une référence jobject JNI à un objet Android Activity ou un pointeur vers un UIView iOS.

    // my_ad_parent is a jobject reference to an Android Activity or
    // a pointer to an iOS UIView.
    firebase::gma::AdParent ad_parent =
      static_cast<firebase::gma::AdParent>(my_ad_parent);
    firebase::Future<void> result = rewarded_ad->Initialize(ad_parent);
    
  4. Au lieu de conserver le futur comme variable, vous pouvez périodiquement vérifiez l'état de l'opération d'initialisation en appelant InitializeLastResult() sur l'objet RewardedAd. Cela peut être utile pour suivre le processus d'initialisation dans votre boucle globale de jeu.

    // Monitor the status of the future in your game loop:
    firebase::Future<void> result = rewarded_ad->InitializeLastResult();
    if (result.status() == firebase::kFutureStatusComplete) {
      // Initialization completed.
      if(future.error() == firebase::gma::kAdErrorCodeNone) {
        // Initialization successful.
      } else {
        // An error has occurred.
      }
    } else {
      // Initialization on-going.
    }
    

Pour en savoir plus sur l'utilisation de firebase::Future, consultez Utiliser des objets Future pour surveiller l'état d'avancement de la méthode les appels.

Charger une annonce

Le chargement d'une annonce s'effectue à l'aide de la méthode LoadAd() sur une RewardedAd. . La méthode de chargement nécessite que vous ayez initialisé RewardedAd et que vous disposez de votre ID de bloc d'annonces et d'un objet AdRequest. A firebase::Future est renvoyé. Vous pouvez l'utiliser pour surveiller l'état et le résultat. de l'opération de chargement.

Le code suivant montre comment charger une annonce une fois que l'RewardedAd a été correctement initialisé:

firebase::gma::AdRequest ad_request;
firebase::Future<firebase::gma::AdResult> load_ad_result;
load_ad_result = rewarded_ad->LoadAd(rewarded_ad_unit_id, ad_request);

S'inscrire pour recevoir des rappels

Vous devez étendre la classe FullScreenContentListener afin de recevoir des notifications de présentation d'annonces avec récompense et d'événements de cycle de vie. Votre La sous-classe FullScreenContentListener peut être enregistrée via la RewardedAd::SetFullScreenContentListener(). Il recevra des rappels lorsque la présentation de l'annonce a réussi ou échoué, ainsi que lorsque il est ignoré.

Le code suivant montre comment étendre la classe et l'attribuer à l'annonce:

  class ExampleFullScreenContentListener
      : public firebase::gma::FullScreenContentListener {

   public:
    ExampleFullScreenContentListener() {}

    void OnAdClicked() override {
      // This method is invoked when the user clicks the ad.
    }

    void OnAdDismissedFullScreenContent() override {
     // This method is invoked when the ad dismisses full screen content.
    }

    void OnAdFailedToShowFullScreenContent(const AdError& error) override {
      // This method is invoked when the ad failed to show full screen content.
      // Details about the error are contained within the AdError parameter.
    }

    void OnAdImpression() override {
      // This method is invoked when an impression is recorded for an ad.
    }

    void OnAdShowedFullScreenContent() override {
      // This method is invoked when the ad showed its full screen content.
    }
  };

  ExampleFullScreenContentListener* example_full_screen_content_listener =
    new ExampleFullScreenContentListener();
  rewarded_ad->SetFullScreenContentListener(example_full_screen_content_listener);

RewardedAd est un objet à usage unique. Cela signifie qu'une fois qu'une annonce avec récompense ne peut pas être affichée à nouveau. Une bonne pratique consiste à charger une autre annonce avec récompense dans la méthode OnAdDismissedFullScreenContent() de votre FullScreenContentListener pour que la prochaine annonce avec récompense commence à se charger dès que car la précédente est ignorée.

Diffuser l'annonce et gérer l'événement lié à la récompense

Avant de diffuser une annonce avec récompense, vous devez présenter à l'utilisateur choix explicite de regarder le contenu d'une annonce avec récompense en échange d'une récompense Avec récompense les annonces doivent toujours être activées.

Lorsque vous présentez votre annonce, vous devez fournir un objet UserEarnedReward à gérer la récompense pour l'utilisateur.

Le code suivant montre comment afficher un RewardedAd:

// A simple listener track UserEarnedReward events.
class ExampleUserEarnedRewardListener :
    public firebase::gma::UserEarnedRewardListener {
 public:
   ExampleUserEarnedRewardListener() { }

  void OnUserEarnedReward(const firebase::gma::AdReward& reward) override {
    // Reward the user!
  }
};

ExampleUserEarnedRewardListener* user_earned_reward_listener =
  new ExampleUserEarnedRewardListener();
firebase::Future<void> result = rewarded_ad->Show(user_earned_reward_listener);

Questions fréquentes

Existe-t-il un délai avant expiration pour l'appel d'initialisation ?
Au bout de 10 secondes, le SDK Google Mobile Ads C++ effectue Valeur firebase::Future renvoyée par Initialize(), même si un réseau de médiation n'a pas 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 ?

Il est recommandé de charger les annonces une fois le SDK initialisé. Même si un réseau de médiation n'est pas prêt, le SDK Google Mobile Ads C++ mais demander une annonce à ce réseau. Ainsi, si un réseau de médiation termine après l'expiration du délai, il peut toujours traiter les futures demandes d'annonces dans ce session.

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

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

AdapterStatus.description() explique pourquoi un adaptateur n'est pas prêt à être servi les demandes d'annonces. Consultez le code source de notre exemple d'application de démarrage rapide dans GitHub pour obtenir un exemple de journalisation de l'état de l'adaptateur de médiation.

Ressources supplémentaires

Exemple dans GitHub