Les utilisateurs ont la possibilité d'interagir avec les annonces avec récompense en échange de récompenses dans l'application. Ce guide explique comment intégrer des annonces avec récompense dans des applications Android et iOS à l'aide du SDK Google Mobile Ads C++.
Consultez des témoignages de réussite de clients : étude de cas 1, étude de cas 2.
Prérequis
- Suivez les instructions de la section Premiers pas.
- (Android uniquement) Familiarisez-vous avec les références
jobjectJNI (consultez les conseils JNI pour Android).
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 tests dédié aux annonces avec récompense, qui varie en fonction de la plate-forme de l'appareil :
- Android:
ca-app-pub-3940256099942544/5224354917 - iOS:
ca-app-pub-3940256099942544/1712485313
Ces ID ont été spécialement configurés pour renvoyer des annonces tests pour chaque requête. Vous pouvez les utiliser librement dans vos propres applications lors de la programmation, des tests et du débogage. Veillez simplement à les 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.
Implémentation
Voici les principales étapes à suivre pour intégrer des annonces avec récompense :
- Charger une annonce
- S'inscrire aux rappels
- Afficher l'annonce et gérer l'événement de récompense
Configurer une RewardedAd
Les annonces avec récompense s'affichent dans des objets RewardedAd. La première étape pour intégrer des annonces avec récompense dans votre application consiste donc à créer et à initialiser une instance de RewardedAd.
Ajoutez l'en-tête suivant au code C++ de votre application :
#include "firebase/gma/rewarded_ad.h"
Déclarez et instanciez un objet
RewardedAd:firebase::gma::RewardedAd* rewarded_ad; rewarded_ad = new firebase::gma::RewardedAd();
Initialisez l'instance
RewardedAdà l'aide de votre vue parent castée en typeAdParent. La vue parent est une référencejobjectJNI à uneActivityAndroid ou un pointeur vers uneUIViewiOS.// 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);Au lieu de conserver l'avenir en tant que variable, vous pouvez vérifier régulièrement l'état de l'opération d'initialisation en appelant
InitializeLastResult()sur l'objetRewardedAd. Cela peut être utile pour suivre le processus d'initialisation dans votre boucle de jeu globale.// 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 futures pour surveiller l'état d'achèvement des appels de méthode
calls.
Charger une annonce
Le chargement d'une annonce s'effectue à l'aide de la méthode LoadAd() sur un objet RewardedAd. La méthode de chargement nécessite que vous ayez initialisé l'objet RewardedAd, que vous disposiez de votre ID de bloc d'annonces et d'un objet AdRequest. Un 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 RewardedAd a été initialisé correctement :
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 aux rappels
Vous devez étendre la classe FullScreenContentListener pour recevoir des notifications concernant la présentation des annonces avec récompense et les événements de cycle de vie. Votre sous-classe personnalisée
FullScreenContentListener peut être enregistrée via la méthode
RewardedAd::SetFullScreenContentListener(). Elle recevra
des rappels lorsque l'annonce s'affiche correctement ou non, ainsi que lorsqu'elle
est ignorée.
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 est diffusée, elle ne peut plus l'être. Il est recommandé de charger une autre annonce avec récompense dans la méthode OnAdDismissedFullScreenContent() de votre FullScreenContentListener afin que le chargement de l'annonce suivante commence dès que la précédente est ignorée.
Afficher l'annonce et gérer l'événement de récompense
Avant d'afficher une annonce avec récompense aux utilisateurs, vous devez leur proposer explicitement de regarder le contenu de l'annonce avec récompense en échange d'une récompense. Les annonces avec récompense doivent toujours être une expérience d'activation.
Lorsque vous présentez votre annonce, vous devez fournir un objet UserEarnedReward pour gérer la récompense de l'utilisateur.
Le code suivant montre comment afficher une 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
- L'appel d'initialisation est-il soumis à un délai d'inactivité ?
- Après 10 secondes, le SDK Google Mobile Ads C++ complète le
firebase::Futurerenvoyé parInitialize(), même si un réseau de médiation n'a pas encore terminé l'initialisation. - Que se passe-t-il 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 l'initialisation du SDK terminée. Même si un réseau de médiation n'est pas prêt, le SDK Google Mobile Ads C++ demandera quand même une annonce à ce réseau. Ainsi, si un réseau de médiation termine l'initialisation après le délai d'inactivité, il peut toujours répondre aux futures demandes d'annonces au cours 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
GetInitializationStatus().- Comment savoir pourquoi un réseau de médiation particulier n'est pas prêt ?
AdapterStatus.description()explique pourquoi un adaptateur n'est pas prêt à répondre aux demandes d'annonces. Pour obtenir un exemple de journalisation de l'état de l'adaptateur de médiation, consultez le code source de notre exemple d'application de démarrage rapide sur GitHub.
Ressources supplémentaires
Exemple dans GitHub
- Consultez le code source de notre exemple d'application de démarrage rapide sur GitHub.