Bei Anzeigen mit Prämie haben Nutzer die Möglichkeit, mit ihnen zu interagieren und dafür In-App-Prämien zu erhalten. In diesem Leitfaden erfahren Sie, wie Sie Anzeigen mit Prämie mithilfe des Google Mobile Ads C++ SDK in Android- und iOS-Apps einbinden.
Hier finden Sie einige Erfolgsgeschichten von Kunden: Fallstudie 1, Fallstudie 2.
Vorbereitung
- Schließen Sie Jetzt starten ab.
- (Nur Android) Vertrautheit mit JNI-
jobject-Referenzen (siehe Android JNI-Tipps).
Immer mit Testanzeigen testen
Verwenden Sie beim Erstellen und Testen Ihrer Apps Testanzeigen anstelle von Live-Anzeigen. Andernfalls kann es zu einer Sperrung Ihres Kontos kommen.
Testanzeigen lassen sich am einfachsten mit unserer speziellen Test-Anzeigenblock-ID für Anzeigen mit Prämie laden, die je nach Geräteplattform variiert:
- Android:
ca-app-pub-3940256099942544/5224354917 - iOS:
ca-app-pub-3940256099942544/1712485313
Sie wurden speziell so konfiguriert, dass für jede Anfrage Testanzeigen zurückgegeben werden. Sie können sie in Ihren eigenen Apps beim Programmieren, Testen und Debuggen verwenden. Ersetzen Sie sie durch Ihre eigene Anzeigenblock-ID, bevor Sie Ihre App veröffentlichen.
Weitere Informationen zur Funktionsweise der Testanzeigen des Mobile Ads SDK finden Sie unter Testanzeigen.
Implementierung
Die wichtigsten Schritte zum Einbinden von Anzeigen mit Prämie sind:
- Anzeige laden
- Registrieren Sie sich für Rückrufe.
- Anzeige einblenden und das Prämienereignis verarbeiten
RewardedAd konfigurieren
Anzeigen mit Prämie werden in RewardedAd-Objekten angezeigt. Der erste Schritt zur Einbindung von Anzeigen mit Prämie in Ihre App besteht also darin, eine Instanz von RewardedAd zu erstellen und zu initialisieren.
Fügen Sie dem C++-Code Ihrer App den folgenden Header hinzu:
#include "firebase/gma/rewarded_ad.h"
Deklarieren und instanziieren Sie ein
RewardedAd-Objekt:firebase::gma::RewardedAd* rewarded_ad; rewarded_ad = new firebase::gma::RewardedAd();
Initialisieren Sie die
RewardedAd-Instanz mit der übergeordneten Ansicht, die in einenAdParent-Typ umgewandelt wurde. Die Elternansicht ist eine JNI-jobject-Referenz auf ein Android-Activityoder ein Zeiger auf ein iOS-UIView.// 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);Alternativ können Sie den Status des Initialisierungsvorgangs regelmäßig prüfen, indem Sie
InitializeLastResult()für dasRewardedAd-Objekt aufrufen. Dies kann hilfreich sein, um den Initialisierungsprozess in Ihrer globalen Spielschleife im Auge zu behalten.// 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. }
Weitere Informationen zur Arbeit mit firebase::Future finden Sie unter Futures verwenden, um den Abschlussstatus von Methodenaufrufen zu überwachen.
Anzeige laden
Anzeigen werden mit der Methode LoadAd() für ein RewardedAd-Objekt geladen. Für die Lademethode muss das RewardedAd-Objekt initialisiert sein und Sie benötigen Ihre Anzeigenblock-ID und ein AdRequest-Objekt. Es wird ein firebase::Future zurückgegeben, mit dem Sie den Status und das Ergebnis des Ladevorgangs überwachen können.
Der folgende Code zeigt, wie eine Anzeige geladen wird, nachdem das RewardedAd erfolgreich initialisiert wurde:
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);
Für Callbacks registrieren
Sie müssen die Klasse FullScreenContentListener erweitern, um Benachrichtigungen zur Präsentation von Anzeigen mit Prämie und zu Lifecycle-Events zu erhalten. Ihre benutzerdefinierte FullScreenContentListener-Unterklasse kann über die Methode RewardedAd::SetFullScreenContentListener() registriert werden. Sie erhält dann Callbacks, wenn die Anzeige erfolgreich oder nicht erfolgreich präsentiert wird und wenn sie geschlossen wird.
Der folgende Code zeigt, wie Sie die Klasse erweitern und der Anzeige zuweisen:
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 ist ein Einmalobjekt. Das bedeutet, dass eine Anzeige mit Prämie nicht noch einmal ausgeliefert werden kann, nachdem sie einmal ausgeliefert wurde. Es empfiehlt sich, in der Methode OnAdDismissedFullScreenContent() des FullScreenContentListener eine weitere Anzeige mit Prämie zu laden, damit die nächste Anzeige mit Prämie geladen wird, sobald die vorherige geschlossen wird.
Anzeige einblenden und Ereignis mit Prämie verarbeiten
Bevor Sie Nutzern eine Anzeige mit Prämie präsentieren, müssen Sie ihnen die Möglichkeit geben, sich explizit dafür zu entscheiden, sich den Anzeigeninhalt im Austausch für eine Belohnung anzusehen. Anzeigen mit Prämie müssen immer eine Opt-in-Option sein.
Wenn Sie Ihre Anzeige präsentieren, müssen Sie ein UserEarnedReward-Objekt bereitstellen, um die Prämie für den Nutzer zu verwalten.
Der folgende Code zeigt, wie ein RewardedAd angezeigt wird:
// 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);
FAQ
- Gibt es ein Zeitlimit für den Initialisierungsaufruf?
- Nach 10 Sekunden schließt das Google Mobile Ads C++ SDK das von
Initialize()zurückgegebenefirebase::Futureab, auch wenn ein Vermittlungsnetzwerk die Initialisierung noch nicht abgeschlossen hat. - Was ist, wenn einige Vermittlungsnetzwerke nicht bereit sind, wenn ich den Initialisierungs-Callback erhalte?
Es empfiehlt sich, Anzeigen erst nach Abschluss der SDK-Initialisierung zu laden. Auch wenn ein Vermittlungsnetzwerk nicht bereit ist, fordert das Google Mobile Ads C++ SDK trotzdem eine Anzeige von diesem Netzwerk an. Wenn die Initialisierung eines Vermittlungsnetzwerks nach dem Zeitlimit abgeschlossen wird, können zukünftige Anzeigenanfragen in dieser Sitzung weiterhin bedient werden.
Sie können den Initialisierungsstatus aller Adapter während der gesamten App-Sitzung abfragen, indem Sie
GetInitializationStatus()aufrufen.- Wie finde ich heraus, warum ein bestimmtes Vermittlungsnetzwerk nicht bereit ist?
AdapterStatus.description()beschreibt, warum ein Adapter nicht bereit ist, Anzeigenanfragen zu verarbeiten. Im Quellcode unserer Beispiel-Kurzanleitungs-App auf GitHub finden Sie ein Beispiel für das Logging des Status von Vermittlungsadaptern.
Zusätzliche Ressourcen
Beispiel in GitHub
- Sehen Sie sich den Quellcode unserer Beispiel-App für den Schnelleinstieg auf GitHub an.