Bei Anzeigen mit Prämie haben Nutzer die Möglichkeit, mit ihnen zu interagieren und im Gegenzug Prämien in der App zu erhalten. In dieser Anleitung erfahren Sie, wie Sie Anzeigen mit Prämie mithilfe des Google Mobile Ads C++ SDK in Android- und iOS-Apps einbinden.
Erfolgsgeschichten von Kunden: Fallstudie 1, Fallstudie 2.
Vorbereitung
- Führen Sie die Schritte unter Erste Schritte aus.
- (Nur Android) Sie sind mit der Verwendung von
jobjectReferenzen in JNI vertraut (siehe Android JNI-Tipps).
Immer mit Testanzeigen testen
Verwenden Sie beim Erstellen und Testen Ihrer Apps Testanzeigen anstelle von aktiven Anzeigen. Andernfalls kann Ihr Konto gesperrt werden.
Testanzeigen lassen sich am einfachsten mit unserer speziellen Test-Anzeigenblock-ID für Anzeigen mit Prämie laden. Diese variiert je nach Geräteplattform:
- Android:
ca-app-pub-3940256099942544/5224354917 - iOS:
ca-app-pub-3940256099942544/1712485313
Diese IDs sind speziell so konfiguriert, dass bei jeder Anfrage Testanzeigen zurückgegeben werden. Sie können sie beim Programmieren, Testen und Debuggen in Ihren eigenen Apps verwenden. Ersetzen Sie sie vor der Veröffentlichung Ihrer App durch Ihre eigene Anzeigenblock-ID.
Weitere Informationen zur Funktionsweise von Testanzeigen im Mobile Ads SDK finden Sie unter Testanzeigen.
Implementierung
Die wichtigsten Schritte zum Einbinden von Anzeigen mit Prämie sind:
- Anzeige laden
- Für Callbacks registrieren
- Anzeige präsentieren und das Prämienereignis verarbeiten
RewardedAd konfigurieren
Anzeigen mit Prämie werden in RewardedAd-Objekten präsentiert. Der erste Schritt zum Einbinden von Anzeigen mit Prämie in Ihre App besteht 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 den TypAdParentumgewandelt wurde. Die übergeordnete Ansicht ist eine JNI-jobject-Referenz auf eine Android-Activityoder ein Zeiger auf eine 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 dazu, die Zukunft als Variable beizubehalten, können Sie den Status des Initialisierungsvorgangs regelmäßig prüfen, indem Sie
InitializeLastResult()für dasRewardedAd-Objekt aufrufen. Das kann hilfreich sein, um den Initialisierungsprozess in Ihrer globalen Spielschleife zu verfolgen.// 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 Verwendung von firebase::Future finden Sie unter
Futures verwenden, um den Abschlussstatus von Methoden
aufrufen zu überwachen.
Anzeige laden
Eine Anzeige wird 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-Objekt 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 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 zu Präsentations- und Lebenszyklusereignissen von Anzeigen mit Prämie zu erhalten. Ihre benutzerdefinierte
FullScreenContentListener Unterklasse kann mit der
RewardedAd::SetFullScreenContentListener() Methode registriert werden. Sie erhält
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 nur einmal präsentiert werden kann. Als Best Practice wird empfohlen, eine weitere Anzeige mit Prämie in der Methode OnAdDismissedFullScreenContent() Ihres FullScreenContentListener zu laden, damit die nächste Anzeige mit Prämie geladen wird, sobald die vorherige geschlossen wird.
Anzeige präsentieren und das Prämienereignis verarbeiten
Bevor Sie Nutzern eine Anzeige mit Prämie präsentieren, müssen Sie ihnen die Möglichkeit geben, sich den Anzeigeninhalt anzusehen und im Gegenzug eine Prämie zu erhalten. Anzeigen mit Prämie müssen immer eine Opt-in-Option bieten.
Wenn Sie Ihre Anzeige präsentieren, müssen Sie ein UserEarnedReward-Objekt bereitstellen, um die Prämie für den Nutzer zu verarbeiten.
Der folgende Code zeigt, wie Sie eine RewardedAd präsentieren:
// 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
firebase::Future-Objekt ab, das vonInitialize()zurückgegeben wird, auch wenn die Initialisierung eines Vermittlungsnetzwerks noch nicht abgeschlossen ist. - Was passiert, wenn einige Vermittlungsnetzwerke nicht bereit sind, wenn ich den Initialisierungs-Callback erhalte?
Als Best Practice gilt, Anzeigen zu laden, nachdem die SDK-Initialisierung abgeschlossen ist. 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 ist, kann es in dieser Sitzung weiterhin Anzeigenanfragen verarbeiten.
Sie können den Initialisierungsstatus aller Adapter während der gesamten App-Sitzung abrufen, indem Sie
GetInitializationStatus()aufrufen.- Wie finde ich heraus, warum ein bestimmtes Vermittlungsnetzwerk nicht bereit ist?
In
AdapterStatus.description()wird beschrieben, warum ein Adapter nicht bereit ist, Anzeigenanfragen zu verarbeiten. Im Quellcode unserer Beispiel-App für die Kurzanleitung auf GitHub finden Sie ein Beispiel für die Protokollierung des Status des Vermittlungsadapters.
Zusätzliche Ressourcen
Beispiel in GitHub
- Quellcode unserer Beispiel App für die Kurzanleitung auf GitHub ansehen.