Anzeigen mit Prämie

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 mit dem Google Mobile Ads C++ SDK Anzeigen mit Prämie in Android- und iOS-Apps einbinden.

Erfolgsgeschichten von Kunden: Fallstudie 1 und Fallstudie 2.

Voraussetzungen

Immer mit Testanzeigen testen

Verwenden Sie beim Erstellen und Testen Ihrer Apps Testanzeigen und keine Liveanzeigen. Andernfalls kann Ihr Konto gesperrt werden.

Testanzeigen lassen sich am einfachsten mit unserer speziellen Test-Anzeigenblock-ID für Anzeigen mit Prämie laden, 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 einfach durch Ihre eigene Anzeigenblock-ID, bevor Sie Ihre App veröffentlichen.

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

Implementierung

Die wichtigsten Schritte zur Einbindung von Anzeigen mit Prämie:

  1. Laden Sie eine Anzeige.
  2. Registrieren Sie sich für Rückrufe.
  3. Zeigen Sie die Anzeige an und verarbeiten 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 Ihrer App besteht daher 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 der übergeordneten Ansicht, die in einen AdParent-Typ umgewandelt wird. Die übergeordnete Ansicht ist ein JNI-jobject-Verweis auf eine Android-Activity oder 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);
    
  4. Als Alternative zum Beibehalten der Zukunft als Variable können Sie den Status des Initialisierungsvorgangs regelmäßig prüfen. Rufen Sie dazu InitializeLastResult() für das Objekt RewardedAd auf. Dies kann hilfreich sein, um den Initialisierungsprozess in deiner 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 Mit Futures den Abschlussstatus von Methodenaufrufen überwachen.

Anzeige laden

Eine Anzeige kann mithilfe der Methode LoadAd() für ein RewardedAd-Objekt geladen werden. Für die Lademethode müssen Sie das RewardedAd-Objekt initialisiert, die 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 Rückrufe registrieren

Sie müssen die FullScreenContentListener-Klasse erweitern, um Benachrichtigungen zur Präsentation von Anzeigen mit Prämie und zu Lebenszyklus-Ereignissen zu erhalten. Ihre benutzerdefinierte abgeleitete Klasse FullScreenContentListener kann über die Methode RewardedAd::SetFullScreenContentListener() registriert werden. Sie erhält Callbacks, wenn die Anzeige erfolgreich oder nicht erfolgreich ausgeliefert wird oder wenn sie geschlossen wird.

Der folgende Code zeigt, wie der Kurs 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 ist, kann sie nicht noch einmal präsentiert werden. Es empfiehlt sich, eine weitere Anzeige mit Prämie in die OnAdDismissedFullScreenContent()-Methode der FullScreenContentListener zu laden. Dann beginnt die nächste Anzeige mit Prämie, sobald die vorherige geschlossen wird.

Anzeige schalten und Prämienereignis verarbeiten

Bevor Nutzern eine Anzeige mit Prämie präsentiert wird, müssen Sie ihnen ausdrücklich die Möglichkeit geben, sich die Inhalte der Anzeige mit Prämie anzusehen, um eine Prämie zu erhalten. Anzeigen mit Prämie müssen immer aktiviert werden.

Wenn Sie Ihre Anzeige präsentieren, müssen Sie ein UserEarnedReward-Objekt angeben, über das die Prämie für den Nutzer verarbeitet wird.

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 schließt das Google Mobile Ads C++ SDK den von Initialize() zurückgegebenen firebase::Future ab, auch wenn ein Vermittlungsnetzwerk die Initialisierung noch nicht abgeschlossen hat.
Was kann ich tun, 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, fordert das Google Mobile Ads C++ SDK dieses Netzwerk nach einer Anzeige an. Wenn also ein Vermittlungsnetzwerk die Initialisierung nach dem Zeitlimit abgeschlossen hat, kann es weiterhin zukünftige Anzeigenanfragen in dieser Sitzung verarbeiten.

Sie können während der gesamten App-Sitzung weiterhin den Initialisierungsstatus aller Adapter abfragen, indem Sie GetInitializationStatus() aufrufen.

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

In AdapterStatus.description() wird beschrieben, warum ein Adapter nicht für die Verarbeitung von Anzeigenanfragen bereit ist. Im Quellcode unserer Beispiel-Kurzanleitung in GitHub finden Sie ein Beispiel für die Protokollierung des Vermittlungsadapterstatus.

Zusätzliche Ressourcen

Beispiel in GitHub