Bei Anzeigen mit Prämie können Nutzer mit ihnen interagieren und erhalten dafür In-App-Prämien. In diesem Leitfaden erfahren Sie, wie Sie mithilfe des Google Mobile Ads C++ SDK Anzeigen mit Prämie in Android- und iOS-Apps einbinden.
Lesen Sie einige Erfolgsgeschichten von Kunden: Fallstudie 1, Fallstudie 2.
Voraussetzungen
- Schließen Sie Jetzt starten ab.
- (Nur Android) Erfahrung beim Arbeiten mit JNI
jobject
-Referenzen (siehe Android JNI-Tipps).
Immer mit Testanzeigen testen
Verwenden Sie beim Entwickeln und Testen Ihrer Apps Testanzeigen und keine Produktionsanzeigen. Andernfalls kann Ihr Konto gesperrt werden.
Am einfachsten lassen sich Testanzeigen mit unserer dedizierten 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
Sie wurden 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 lediglich durch Ihre Anzeigenblock-ID, bevor Sie Ihre App veröffentlichen.
Weitere Informationen zur Funktionsweise von Testanzeigen des Mobile Ads SDK finden Sie unter Testanzeigen.
Implementierung
Die wichtigsten Schritte zur Integration von Anzeigen mit Prämie:
- Laden Sie eine Anzeige.
- Registrieren Sie sich für Rückrufe.
- Blenden Sie die Anzeige ein und bearbeiten Sie das Prämienereignis.
RewardedAd
konfigurieren
Anzeigen mit Prämie werden in RewardedAd
-Objekten angezeigt. Der erste Schritt zur Integration 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 Instanz
RewardedAd
mit Ihrer übergeordneten Ansicht, die in einenAdParent
-Typ umgewandelt wird. Die übergeordnete Ansicht ist eine JNI-jobject
-Referenz auf ein Android-Activity
oder ein Verweis 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);
Anstatt das Future als Variable beizubehalten, können Sie den Status des Initialisierungsvorgangs regelmäßig prüfen. Rufen Sie dazu
InitializeLastResult()
für dasRewardedAd
-Objekt auf. Dies kann hilfreich sein, um den Initialisierungsprozess in Ihrer globalen Spielschleife nachzuverfolgen.// 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 ist es erforderlich, dass Sie das RewardedAd
-Objekt initialisiert haben. Außerdem benötigen Sie 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 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 Rückrufe registrieren
Sie müssen die FullScreenContentListener
-Klasse erweitern, um Benachrichtigungen über die Präsentation von Anzeigen mit Prämie und Lebenszyklusereignisse zu erhalten. Ihre benutzerdefinierte FullScreenContentListener
-Unterklasse kann über die Methode RewardedAd::SetFullScreenContentListener()
registriert werden. Sie erhält Callbacks, wenn die Anzeige erfolgreich oder nicht erfolgreich präsentiert oder geschlossen wird.
Der folgende Code zeigt, wie die Klasse erweitert und der Anzeige zugewiesen wird:
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. Sobald eine Anzeige mit Prämie
eingeblendet wurde, kann sie nicht erneut eingeblendet werden. Es empfiehlt sich, eine weitere Anzeige mit Prämie in der OnAdDismissedFullScreenContent()
-Methode Ihrer FullScreenContentListener
zu laden, damit die nächste Anzeige mit Prämie geladen wird, sobald die vorherige Anzeige geschlossen wird.
Anzeige einblenden und Prämienereignis abwickeln
Bevor Nutzern eine Anzeige mit Prämie präsentiert wird, müssen Sie ihnen die Möglichkeit geben, sich Anzeigen mit Prämie anzusehen. Anzeigen mit Prämie müssen dem Nutzer zugestimmt werden.
Wenn du deine Anzeige präsentierst, musst du 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);
Häufig gestellte Fragen
- Gibt es eine Zeitüberschreitung für den Initialisierungsaufruf?
- Nach 10 Sekunden vervollständigt das Google Mobile Ads C++ SDK das von
Initialize()
zurückgegebenefirebase::Future
, auch wenn die Initialisierung eines Vermittlungsnetzwerks noch nicht abgeschlossen ist. - Was passiert, wenn einige Vermittlungsnetzwerke nicht bereit sind, wenn ich den Initialisierungs-Callback erhalte?
Es wird empfohlen, Anzeigen zu laden, nachdem die SDK-Initialisierung abgeschlossen ist. Auch wenn kein Vermittlungsnetzwerk bereit ist, fordert das Google Mobile Ads C++ SDK trotzdem eine Anzeige bei diesem Werbenetzwerk an. Wenn die Initialisierung eines Vermittlungsnetzwerks nach dem Zeitlimit abgeschlossen wird, können in dieser Sitzung also weiterhin Anzeigenanfragen verarbeitet werden.
Sie können den Initialisierungsstatus aller Adapter während der gesamten App-Sitzung weiterhin abfragen, indem Sie
GetInitializationStatus()
aufrufen.- Wie finde ich heraus, warum ein bestimmtes Vermittlungsnetzwerk nicht bereit ist?
AdapterStatus.description()
beschreibt, warum ein Adapter nicht zur Verarbeitung von Anzeigenanfragen bereit ist. Ein Beispiel für das Logging des Vermittlungsadapterstatus finden Sie im Quellcode unserer Kurzanleitungsanwendung in GitHub.
Zusätzliche Ressourcen
Beispiel in GitHub
- Sehen Sie sich den Quellcode unserer Schnellstartanwendung in GitHub an.