Anzeigen mit Prämie

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

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:

  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 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.

  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 mit Ihrer übergeordneten Ansicht, die in einen AdParent-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);
    
  4. Anstatt das Future als Variable beizubehalten, können Sie den Status des Initialisierungsvorgangs regelmäßig prüfen. Rufen Sie dazu InitializeLastResult() für das RewardedAd-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ückgegebene firebase::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