Anzeigen mit Prämie

Mit Sammlungen den Überblick behalten Sie können Inhalte basierend auf Ihren Einstellungen speichern und kategorisieren.

Bei Anzeigen mit Prämie können Nutzer mit ihnen interagieren, um In-App-Prämien zu erhalten. In diesem Leitfaden erfahren Sie, wie Sie Anzeigen mit Prämie über das C++ SDK von Google Mobile Ads in Android- und iOS-Apps einbinden.

Lesen Sie einige Erfolgsgeschichten von Kunden: Fallstudie 1, Fallstudie 2.

Voraussetzungen

Immer mit Testanzeigen testen

Verwenden Sie beim Erstellen und Testen Ihrer Apps Testanzeigen statt Live-Produktionsanzeigen. Andernfalls kann Ihr Konto gesperrt werden.

Am einfachsten laden Sie Testanzeigen mit der Test-Anzeigenblock-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 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 durch Ihre eigene Anzeigenblock-ID.

Weitere Informationen zur Funktionsweise der Testanzeigen des Mobile Ads SDK finden Sie unter Testanzeigen.

Implementierung

So binden Sie Anzeigen mit Prämie ein:

  1. Laden Sie eine Anzeige.
  2. Registriere dich für Callbacks.
  3. Die Anzeige einblenden und das Prämienereignis bearbeiten

RewardedAd konfigurieren

Anzeigen mit Prämie werden in RewardedAd-Objekten angezeigt. Im ersten Schritt zur Integration von Anzeigen mit Prämie in Ihrer App müssen Sie daher zuerst eine Instanz von RewardedAd erstellen und initialisieren.

  1. Fügen Sie dem C++-Code Ihrer App den folgenden Header hinzu:

     #include "firebase/gma/rewarded_ad.h"
    

  2. Deklarieren und instanziieren Sie ein RewardedAd-Objekt:

     firebase::gma::RewardedAd* rewarded_ad;
     rewarded_ad = new firebase::gma::RewardedAd();
    

  3. Initialisieren Sie die Instanz RewardedAd mithilfe des Streams der übergeordneten Ansicht in einen AdParent-Typ. Die übergeordnete Ansicht ist eine JNI-jobject-Referenz auf eine Android-Activity oder ein Hinweis 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);
    
  4. Als Alternative zur Beibehaltung der Zukunft als Variable können Sie den Status des Initialisierungsvorgangs regelmäßig prüfen, indem Sie InitializeLastResult() für das Objekt RewardedAd aufrufen. 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 zum Arbeiten mit firebase::Future finden Sie unter Futures verwenden, um den Abschlussstatus von Methodenaufrufen 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 worden sein und Sie müssen Ihre Anzeigenblock-ID und 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 Präsentieren- und Lebenszyklusereignissen mit Prämie zu erhalten. Die benutzerdefinierte FullScreenContentListener-Unterklasse kann über die Methode RewardedAd::SetFullScreenContentListener() registriert werden. Sie empfängt Callbacks, wenn die Anzeige erfolgreich oder nicht erfolgreich eingeblendet oder abgelehnt wurde.

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. Wenn eine Anzeige mit Prämie präsentiert wurde, kann sie also nicht noch einmal ausgeliefert werden. Als Best Practice wird empfohlen, eine weitere Anzeige mit Prämie in der Methode OnAdDismissedFullScreenContent() von 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 den Nutzern explizit die Möglichkeit geben, sich Anzeigen mit Prämie anzusehen. Anzeigen mit Prämie müssen immer aktiviert werden.

Wenn Sie Ihre Anzeige präsentieren, müssen Sie ein UserEarnedReward-Objekt angeben, mit dem die Prämie für den Nutzer verarbeitet werden soll.

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 führt das Google Mobile Ads C++ SDK die von Initialize() zurückgegebenen firebase::Future aus, auch wenn die Initialisierung eines Vermittlungsnetzwerks noch nicht abgeschlossen ist.
Was kann ich tun, wenn einige Vermittlungsnetzwerke nicht bereit sind, wenn ich den Initialisierungs-Callback erhalte?

Als Best Practice wird empfohlen, Anzeigen nach Abschluss der SDK-Initialisierung zu laden. Auch wenn ein Vermittlungsnetzwerk nicht bereit ist, fordert das C++ SDK von Google Mobile Ads dieses Netzwerk immer noch nach einer Anzeige. Wenn ein Vermittlungsnetzwerk also nach dem Zeitlimit die Initialisierung abgeschlossen hat, kann es zukünftige Anzeigenanfragen in dieser Sitzung verarbeiten.

Sie können den Initialisierungsstatus aller Adapter während der gesamten Anwendungssitzung durch Aufrufen von GetInitializationStatus() abfragen.

Wie finde ich heraus, warum ein bestimmtes Vermittlungsnetzwerk nicht bereit ist?

AdapterStatus.description() beschreibt, warum ein Adapter noch nicht für die Verarbeitung von 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.