Les annonces avec récompense permettent aux utilisateurs d'interagir avec elles en échange de récompenses dans l'application. Ce guide vous explique comment intégrer des annonces avec récompense dans des applications Android et iOS à l'aide du SDK C++ Google Mobile Ads.
Lisez des témoignages de clients : étude de cas 1, étude de cas 2.
Prérequis
- Suivez la procédure Premiers pas.
- (Android uniquement) Bonne connaissance des références JNI
jobject
(consultez les conseils sur JNI Android).
Toujours tester les annonces
Lorsque vous créez et testez vos applications, veillez à utiliser des annonces de test 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é, qui varie en fonction de 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 requête. Vous êtes libre de les utiliser 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 Tester les annonces.
Implémentation
Voici les principales étapes à suivre pour intégrer des annonces avec récompense:
- Chargez une annonce.
- Inscrivez-vous pour bénéficier de rappels.
- Affichez l'annonce et gérez l'événement de récompense.
Configurer un RewardedAd
Les annonces avec récompense sont affichées 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 la conversion de votre vue parent vers un typeAdParent
. La vue parent est une référence JNIjobject
à unActivity
Android ou un pointeur vers unUIView
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);
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 s'avérer 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
, utilisez Futures pour surveiller l'état d'avancement des appels de méthode.
Charger une annonce
Pour charger une annonce, utilisez la méthode LoadAd()
sur un objet RewardedAd
. La méthode de chargement nécessite d'avoir initialisé l'objet RewardedAd
, et d'avoir votre ID de bloc d'annonces et un objet AdRequest
. firebase::Future
est renvoyé. Vous pouvez l'utiliser pour surveiller l'état et le résultat du chargement.
Le code suivant montre comment charger une annonce une fois que RewardedAd
a été 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
pour recevoir des notifications sur les événements liés à la présentation des annonces avec récompense et au cycle de vie. Votre sous-classe FullScreenContentListener
personnalisée peut être enregistrée via la méthode RewardedAd::SetFullScreenContentListener()
. Elle reçoit 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 a été diffusée, elle ne peut plus l'être. Nous vous recommandons de charger une autre annonce avec récompense dans la méthode OnAdDismissedFullScreenContent()
de votre FullScreenContentListener
afin que la prochaine annonce avec récompense commence à se charger dès que la précédente est ignorée.
Diffuser l'annonce et gérer l'événement de récompense
Avant de proposer une annonce avec récompense aux utilisateurs, vous devez leur proposer explicitement de regarder le contenu de cette annonce en échange d'une récompense. Les annonces avec récompense doivent toujours être activées.
Lorsque vous présentez votre annonce, vous devez fournir un objet UserEarnedReward
pour gérer la récompense.
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);
Question fréquente
- Existe-t-il un délai avant expiration pour l'appel d'initialisation ?
- Au bout de 10 secondes, le SDK C++ Google Mobile Ads termine la
firebase::Future
renvoyée parInitialize()
, même si l'initialisation du réseau de médiation n'est toujours pas terminée. - 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 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 C++ Google Mobile Ads lui demandera quand même une annonce. Par conséquent, si l'initialisation d'un réseau de médiation se termine après le délai d'inactivité, elle 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 pendant la session de votre application en appelant
GetInitializationStatus()
.- Comment déterminer pourquoi un réseau de médiation spécifique n'est pas prêt ?
AdapterStatus.description()
explique pourquoi un adaptateur n'est pas prêt à traiter les demandes d'annonces. Consultez le code source de notre exemple d'application de démarrage rapide sur GitHub pour découvrir comment consigner l'état de l'adaptateur de médiation.
Ressources supplémentaires
Exemple dans GitHub
- Affichez le code source de notre exemple d'application de démarrage rapide dans GitHub.