Bei Anzeigen mit Prämie haben Nutzer die Möglichkeit, mit ihnen zu interagieren, um In-App-Prämien zu erhalten. In diesem Leitfaden erfahren Sie, wie Sie Anzeigen mit Prämie über das Google Mobile Ads C++ SDK in Android- und iOS-Apps einbinden.
Lesen Sie einige Erfolgsgeschichten von Kunden: Fallstudie 1, Fallstudie 2.
Voraussetzungen
- Schließen Sie den Startleitfaden ab.
- (Nur Android) Kenntnisse im Umgang mit JNI
jobject
-Referenzen (siehe JNI-Tipps für Android).
Immer mit Testanzeigen testen
Verwenden Sie beim Erstellen und Testen Ihrer Apps Testanzeigen statt Live-Produktionsanzeigen. Sollten Sie dies nicht tun, kann Ihr Konto gesperrt werden.
Die einfachste Methode zum Laden von Testanzeigen ist die Verwendung unserer speziellen Testanzeigenblock-ID für Anzeigen mit Prämie, 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 beim Programmieren, Testen und Debugging in eigenen Apps verwenden. Ersetze sie einfach mit deiner eigenen Anzeigenblock-ID, bevor du deine App veröffentlichst.
Weitere Informationen zur Funktionsweise der Testanzeigen des Mobile Ads SDKs finden Sie unter Testanzeigen.
Implementierung
So binden Sie Anzeigen mit Prämie ein:
- Laden Sie eine Anzeige.
- Registriere dich für Callbacks.
- Die Anzeige schalten und das Prämienereignis bearbeiten.
RewardedAd
konfigurieren
Anzeigen mit Prämie werden in RewardedAd
-Objekten angezeigt. Der erste Schritt zum Integrieren von Anzeigen mit Prämie in Ihre App ist also das Erstellen und Initialisieren einer Instanz von RewardedAd
.
Fügen Sie dem C++-Code Ihrer App den folgenden Header hinzu:
#include "firebase/gma/rewarded_ad.h"
Geben Sie ein
RewardedAd
-Objekt an und instanziieren Sie es:firebase::gma::RewardedAd* rewarded_ad; rewarded_ad = new firebase::gma::RewardedAd();
Initialisieren Sie die Instanz
RewardedAd
mithilfe der Umwandlung der übergeordneten Ansicht in einenAdParent
-Typ. Die übergeordnete Ansicht ist eine JNI-jobject
-Referenz zu einem Android-Activity
oder ein Verweis 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);
Als Alternative zur Beibehaltung der Zukunft als Variable können Sie den Status des Initialisierungsvorgangs regelmäßig prüfen. Rufen Sie dazu
InitializeLastResult()
auf demRewardedAd
-Objekt auf. Dies 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 zum Überwachen des Abschlussstatus von Methodenaufrufen verwenden.
Anzeige laden
Eine Anzeige wird mit der Methode LoadAd()
für ein RewardedAd
-Objekt geladen. Für die Lademethode müssen Sie das RewardedAd
-Objekt initialisiert und Ihre Anzeigenblock-ID sowie ein AdRequest
-Objekt haben. 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 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 Anzeigen mit Prämie und zu Lebenszyklusereignissen zu erhalten. Ihre benutzerdefinierte FullScreenContentListener
-Unterklasse kann über die Methode RewardedAd::SetFullScreenContentListener()
registriert werden und erhält Callbacks, wenn die Anzeige erfolgreich oder nicht erfolgreich angezeigt oder abgelehnt 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 Objekt zur einmaligen Verwendung. Das bedeutet, dass eine Anzeige mit Prämie
nicht mehr ausgeliefert werden kann. Als Best Practice wird empfohlen, eine weitere Anzeige mit Prämie in der Methode OnAdDismissedFullScreenContent()
Ihrer FullScreenContentListener
zu laden, damit die nächste Anzeige mit Prämie geladen wird, sobald die vorherige Anzeige geschlossen wird.
Anzeige schalten und Prämienereignis bearbeiten
Bevor Sie Nutzern eine Anzeige mit Prämie präsentieren, müssen Sie dem Nutzer explizit die Möglichkeit bieten, sich die Anzeige mit Prämie anzusehen. Anzeigen mit Prämie müssen immer aktiviert werden.
Beim Präsentieren Ihrer Anzeige müssen Sie ein UserEarnedReward
-Objekt angeben, um die Prämie für den Nutzer zu verarbeiten.
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 eine Zeitüberschreitung für den Initialisierungsaufruf?
- Nach 10 Sekunden schließt das Google Mobile Ads C++ SDK die von
Initialize()
zurückgegebenefirebase::Future
ab, auch wenn das 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 nach Abschluss der SDK-Initialisierung zu laden. Auch wenn ein Vermittlungsnetzwerk nicht bereit ist, wird das C++ SDK vom Google Mobile Ads-Netzwerk trotzdem nach einer Anzeige gefragt. Wenn also ein Vermittlungsnetzwerk nach dem Zeitlimit beendet wird, kann es zukünftige Anzeigenanfragen in dieser Sitzung verarbeiten.
Sie können während der gesamten Anwendungssitzung weiterhin den Initialisierungsstatus aller Adapter abfragen. Rufen Sie dazu
GetInitializationStatus()
auf.- Wie finde ich heraus, warum ein bestimmtes Vermittlungsnetzwerk nicht bereit ist?
AdapterStatus.description()
beschreibt, warum ein Adapter nicht für Anzeigenanfragen bereit ist. Im Quellcode unserer Beispiel-Kurzanleitungsanwendung in GitHub finden Sie ein Beispiel für den Logging-Status des Vermittlungsadapters.
Weitere Informationen
Beispiel in GitHub
- Sehen Sie sich den Quellcode unserer Beispiel-App in GitHub an.