Anzeigen mit Prämie


Anzeigen mit Prämie bieten Nutzern die Möglichkeit, im Gegenzug mit ihnen zu interagieren. um In-App-Prämien zu erhalten. In diesem Leitfaden erfahren Sie, wie Sie Anzeigen mit Prämie Android- und iOS-Apps, die das Google Mobile Ads C++ SDK verwenden

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

Vorbereitung

Verwenden Sie immer Testanzeigen

Verwenden Sie beim Entwickeln und Testen Ihrer Apps nur Testanzeigen, Live-Produktionsanzeigen. Andernfalls kann Ihr Konto gesperrt werden.

Am einfachsten laden Sie Testanzeigen mit der speziellen 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 für jede Anfrage Testanzeigen zurückgegeben werden. Sie können sie in Ihren eigenen Apps verwenden, während Sie Code schreiben, testen und Fehler beheben. Ersetzen Sie sie vor der Veröffentlichung Ihrer App durch Ihre eigene Anzeigenblock-ID.

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:

  1. Laden Sie eine Anzeige.
  2. Registrieren Sie sich für Rückrufe.
  3. Blenden Sie die Anzeige ein und bearbeiten Sie das Prämienereignis.

RewardedAd konfigurieren

Anzeigen mit Prämie werden in RewardedAd-Objekten präsentiert. 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.

  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 Ihrer übergeordneten Ansicht, die in einen Typ AdParent. Die übergeordnete Ansicht ist eine JNI-jobject-Referenz zu einem Android- Activity oder einen 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);
    
  4. Anstatt die Future-Funktion als Variable zu speichern, können Sie den Status des Initialisierungsvorgangs auch regelmäßig prüfen, indem Sie InitializeLastResult() auf das RewardedAd-Objekt anwenden. Das kann hilfreich sein, um den Initialisierungsprozess in Ihrer globalen Spielschleife im Blick 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 Mit Futures den Abschlussstatus der Methode überwachen Anrufe

Anzeige laden

Das Laden einer Anzeige erfolgt mit der Methode LoadAd() auf einem RewardedAd -Objekt enthält. Für die Lademethode ist es erforderlich, dass RewardedAd initialisiert wurde. Außerdem müssen Sie eine Anzeigenblock-ID und ein AdRequest-Objekt haben. Es wird eine firebase::Future zurückgegeben, mit der Sie den Status und das Ergebnis des Ladevorgangs überwachen können.

Im folgenden Code wird gezeigt, 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 zur Präsentation von Anzeigen mit Prämie und zu Lebenszyklusereignissen zu erhalten. Ihr individuelles Die abgeleitete FullScreenContentListener-Klasse kann über die RewardedAd::SetFullScreenContentListener() an und es wird Rückrufe, wenn die Anzeige erfolgreich oder nicht geschaltet wird, sowie wird er geschlossen.

Im folgenden Code wird gezeigt, 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 angezeigt wird, kann er nicht erneut angezeigt werden. Es empfiehlt sich, eine weitere Anzeige mit Prämie zu laden, in der Methode OnAdDismissedFullScreenContent() Ihres FullScreenContentListener, damit die nächste Anzeige mit Prämie sofort geladen wird da die vorherige geschlossen wird.

Anzeige einblenden und Prämienereignis abwickeln

Bevor Nutzern eine Anzeige mit Prämie präsentiert wird, müssen Sie eine ausdrückliche Wahlmöglichkeit, sich Inhalte von Anzeigen mit Prämie als Gegenleistung für eine Prämie anzusehen. Anzeigen mit Prämie müssen immer optional sein.

Bei der Präsentation Ihrer Anzeige müssen Sie ein UserEarnedReward-Objekt zur Verarbeitung angeben die Belohnung für die Nutzenden.

Im folgenden Code wird gezeigt, 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ückgegebene firebase::Future ab, auch wenn ein Vermittlungsnetzwerk die Initialisierung noch nicht abgeschlossen hat.
Was passiert, wenn einige Vermittlungsnetzwerke noch nicht bereit sind, wenn ich den Callback zur Initialisierung erhalte?

Als Best Practice wird empfohlen, Anzeigen zu laden, nachdem die SDK-Initialisierung abgeschlossen ist. Auch wenn kein Vermittlungsnetzwerk bereit ist, wird das Google Mobile Ads C++ SDK das Netzwerk dennoch um eine Anzeige bitten. Wenn die Initialisierung eines Vermittlungsnetzwerks also nach Ablauf der Zeitüberschreitung abgeschlossen ist, kann es weiterhin zukünftige Anzeigenanfragen in dieser Sitzung bearbeiten.

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

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

AdapterStatus.description() beschreibt, warum ein Adapter nicht einsatzbereit ist Anzeigenanfragen. Im Quellcode unserer Beispiel-App für die Kurzanleitung auf GitHub finden Sie ein Beispiel für das Logging des Mediation-Adapter-Status.

Zusätzliche Ressourcen

Beispiel in GitHub