Anzeigen mit Prämie

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

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:

  1. Laden Sie eine Anzeige.
  2. Registriere dich für Callbacks.
  3. 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.

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

     #include "firebase/gma/rewarded_ad.h"
    

  2. Geben Sie ein RewardedAd-Objekt an und instanziieren Sie es:

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

  3. Initialisieren Sie die Instanz RewardedAd mithilfe der Umwandlung der übergeordneten Ansicht in einen AdParent-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);
    
  4. Als Alternative zur Beibehaltung der Zukunft als Variable können Sie den Status des Initialisierungsvorgangs regelmäßig prüfen. Rufen Sie dazu InitializeLastResult() auf dem RewardedAd-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ückgegebene firebase::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.