Google is committed to advancing racial equity for Black communities. See how.
Diese Seite wurde von der Cloud Translation API übersetzt.
Switch to English

Loslegen

Mit AdMob können Sie Anzeigen in Ihren C ++ - Apps anzeigen. In diesem Handbuch erfahren Sie, wie Sie sich in Firebase integrieren und mit dem Google Mobile Ads SDK interagieren.

Wenn Sie dieses Handbuch zum ersten Mal durchgehen, wird empfohlen, dass Sie die AdMob-Test-App herunterladen und mitverfolgen .

In Firebase integrieren

  1. Führen Sie die Schritte im Abschnitt Setup für iOS oder Setup für Android aus , um AdMob und Firebase zu Ihrer C ++ - App hinzuzufügen.

  2. Fügen Sie die folgenden Header in den C ++ - Code Ihrer App ein:

    #include "firebase/admob.h"
    #include "firebase/admob/types.h"
    #include "firebase/app.h"
    #include "firebase/future.h"
    
  3. Fügen Sie dem C ++ - Code in Ihrer App Folgendes hinzu, um die AdMob-Bibliothek mit Ihrer AdMob-App-ID zu initialisieren (dieser Code sollte vor dem Erstellen einer Banneransicht oder einer Interstitial-Anzeige ausgeführt werden):

    #if defined(__ANDROID__)
    // Create the Firebase app.
    firebase::App* app =
        firebase::App::Create(firebase::AppOptions(),
                              your_jni_env,
                              your_android_activity);
    
    // Your Android AdMob app ID.
    const char* kAdMobAppID = "ca-app-pub-XXXXXXXXXXXXXXXX~NNNNNNNNNN";
    #else
    // Create the Firebase app.
    firebase::App* app =
        firebase::App::Create(firebase::AppOptions());
    
    // Your iOS AdMob app ID.
    const char* kAdMobAppID = "ca-app-pub-XXXXXXXXXXXXXXXX~NNNNNNNNNN";
    #endif  // __ANDROID__
    
    // Initialize the AdMob library with your AdMob app ID.
    firebase::admob::Initialize(*app, kAdMobAppID);
    

Interagieren Sie mit dem Google Mobile Ads SDK

Richten Sie die Anzeigenblock-IDs ein

Wenn Sie C ++ - Code schreiben, der sowohl unter iOS als auch unter Android unterstützt wird, müssen Sie möglicherweise Präprozessoranweisungen verwenden, um Code zu definieren, der nur auf einem bestimmten Betriebssystem kompiliert werden soll. Für die Anzeige von Banner- und Interstitial-Anzeigen auf iOS und Android wird empfohlen, für jedes Betriebssystem und jede einzelne Anzeigenplatzierung eine neue Anzeigenblock-ID zu erstellen. Die folgenden Anzeigenblock-IDs wurden für iOS und Android erstellt und sind so konfiguriert, dass immer Testanzeigen geschaltet werden:

#if defined(__ANDROID__)
// Android ad unit IDs
const char* kBannerAdUnit = "ca-app-pub-3940256099942544/6300978111";
const char* kInterstitialAdUnit = "ca-app-pub-3940256099942544/1033173712";
#else
// iOS ad unit IDs
const char* kBannerAdUnit = "ca-app-pub-3940256099942544/2934735716";
const char* kInterstitialAdUnit = "ca-app-pub-3940256099942544/4411468910";
#endif

Richten Sie eine Banneransicht ein

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

#include "firebase/admob/banner_view.h"

Deklarieren und instanziieren Sie ein BannerView Objekt:

firebase::admob::BannerView* banner_view;
banner_view = new firebase::admob::BannerView();

Erstellen Sie eine AdSize und initialisieren Sie die AdSize :

firebase::admob::AdSize ad_size;
ad_size.ad_size_type = firebase::admob::kAdSizeStandard;
ad_size.width = 320;
ad_size.height = 50;
// my_ad_parent is a reference to an iOS UIView or an Android Activity.
// This is the parent UIView or Activity of the banner view.
banner_view->Initialize(static_cast<firebase::admob::AdParent>(my_ad_parent), kBannerAdUnit, ad_size);

Richten Sie eine Interstitial-Anzeige ein

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

#include "firebase/admob/interstitial_ad.h"

Deklarieren und instanziieren Sie ein InterstitialAd Objekt:

firebase::admob::InterstitialAd* interstitial_ad;
interstitial_ad = new firebase::admob::InterstitialAd();

Initialisieren Sie die Interstitial-Anzeige:

// my_ad_parent is a reference to an iOS UIView or an Android Activity.
// This is the parent UIView or Activity of the interstitial ad.
interstitial_ad->Initialize(static_cast<firebase::admob::AdParent>(my_ad_parent), kInterstitialAdUnit);

Erstellen Sie eine AdMob-Anzeigenanforderung

Mit der AdMob-Bibliothek können Sie benutzerdefinierte Targeting-Informationen für eine Anzeigenanforderung bereitstellen. Dies erfolgt durch Festlegen der Mitglieder einer AdRequest Struktur. Die Struktur wird dann an die BannerView::LoadAd() oder InterstitialAd::LoadAd() .

Allgemeine Informationen zum Targeting und Anpassen von Anzeigenanfragen finden Sie in unseren iOS- und Android- Targeting-Handbüchern.

Hier ist die AdRequest Struktur, die von BannerView und InterstitialAd zum BannerView einer Anzeigenanforderung verwendet wird:

struct AdRequest {
  const char **test_device_ids;
  unsigned int test_device_id_count;
  const char **keywords;
  unsigned int keyword_count;
  const KeyValuePair *extras;
  unsigned int extras_count;
  int birthday_day;
  int birthday_month;
  int birthday_year;
  Gender gender;
  ChildDirectedTreatmentState tagged_for_child_directed_treatment;
};

Deklarieren und initialisieren Sie die AdRequest Struktur:

// Initialize all the AdRequest struct member values to zero.
firebase::admob::AdRequest my_ad_request = {};

Mit dem folgenden Code werden die AdRequest der AdRequest Struktur festgelegt, um der Anzeigenanforderung Targeting-Informationen hinzuzufügen:

// If the app is aware of the user's gender, it can be added to the
// targeting information. Otherwise, "unknown" should be used.
my_ad_request.gender = firebase::admob::kGenderUnknown;

// The user's birthday, if known. Note that months are indexed from one.
my_ad_request.birthday_day = 10;
my_ad_request.birthday_month = 11;
my_ad_request.birthday_year = 1976;

// Additional keywords to be used in targeting.
static const char* kKeywords[] = {"AdMob", "C++", "Fun"};
my_ad_request.keyword_count = sizeof(kKeywords) / sizeof(kKeywords[0]);
my_ad_request.keywords = kKeywords;

// "Extra" key value pairs can be added to the request as well.
static const firebase::admob::KeyValuePair kRequestExtras[] = {
    {"the_name_of_an_extra", "the_value_for_that_extra"}};
my_ad_request.extras_count = sizeof(kRequestExtras) / sizeof(kRequestExtras[0]);
my_ad_request.extras = kRequestExtras;

// Register the device IDs associated with any devices that will be used to
// test your app. Below are sample test device IDs used for making the ad request.
static const char* kTestDeviceIDs[] =
    {"2077ef9a63d2b398840261c8221a0c9b",
     "098fe087d987c9a878965454a65654d7"};
my_ad_request.test_device_id_count =
    sizeof(kTestDeviceIDs) / sizeof(kTestDeviceIDs[0]);
my_ad_request.test_device_ids = kTestDeviceIDs;

AdRequest die AdRequest Struktur an die BannerView::LoadAd() und Interstitial::LoadAd() :

banner_view->LoadAd(my_ad_request);
interstitial_ad->LoadAd(my_ad_request);

Note: A single `AdRequest` struct can be reused for multiple calls.

Verwenden Sie Futures, um den Abschlussstatus von Methodenaufrufen zu überwachen

Mit Futures können Sie den Abschlussstatus Ihrer vorherigen BannerView oder InterstitialAd Methodenaufrufe ermitteln. Wenn beispielsweise die InterstitialAd::LoadAd() -Methode InterstitialAd::LoadAd() , wird eine neue Zukunft erstellt und zurückgegeben. Apps können den Status der Zukunft abfragen, um festzustellen, wann die Anzeige geladen wurde. Sobald die Zukunft abgeschlossen ist, kann die Interstitial-Anzeige am nächsten natürlichen Haltepunkt in Ihrer App angezeigt werden.

Die meisten Methoden in den Klassen BannerView und InterstitialAd verfügen über eine entsprechende Methode "Letztes Ergebnis", mit der Apps die neueste Zukunft für eine bestimmte Aktion abrufen können. Die InterstitialAd::LoadAd() -Methode verfügt beispielsweise über eine entsprechende Methode namens InterstitialAd::LoadAdLastResult() . Es gibt eine Zukunft zurück, mit der der Status des letzten Aufrufs der InterstitialAd::LoadAd() -Methode InterstitialAd::LoadAd() werden kann.

Ebenso können Apps die BannerView::InitializeLastResult() -Methode verwenden, um eine Zukunft BannerView::InitializeLastResult() die den Status (und gegebenenfalls den Fehlercode) des letzten Aufrufs der BannerView::Initialize() -Methode darstellt. Wenn der Status vollständig ist und der Fehlercode firebase::admob::kAdMobErrorNone , können Sie die BannerView::Show() durch Aufrufen der BannerView::Show() -Methode sichtbar machen:

if (banner_view->InitializeLastResult().status() ==
    firebase::kFutureStatusComplete &&
    banner_view->InitializeLastResult().error() ==
    firebase::admob::kAdMobErrorNone) {
  banner_view->Show();
}

Sobald der Status der Zukunft für den letzten Aufruf der BannerView::Show() -Methode abgeschlossen ist, können Sie eine Anzeige in die BannerView::Show() laden:

if (banner_view->ShowLastResult().status() ==
    firebase::kFutureStatusComplete &&
    banner_view->ShowLastResult().error() ==
    firebase::admob::kAdMobErrorNone) {
  banner_view->LoadAd(my_ad_request);
}

Verwenden Sie für Interstitial-Anzeigen die Methode InterstitialAd::InitializeLastResult() , um eine Zukunft abzurufen, die den Status (und gegebenenfalls den Fehlercode) des letzten Aufrufs der InterstitialAd::Initialize() -Methode darstellt. Wenn der Status vollständig ist und der Fehlercode firebase::admob::kAdMobErrorNone , können Sie die Interstitial-Anzeige laden:

if (interstitial_ad->InitializeLastResult().status() ==
    firebase::kFutureStatusComplete &&
    interstitial_ad->InitializeLastResult().error() ==
    firebase::admob::kAdMobErrorNone) {
  interstitial_ad->LoadAd(my_ad_request);
}

Sobald der Status der Zukunft für den letzten Aufruf der InterstitialAd::LoadAd() -Methode abgeschlossen ist, können Sie die Interstitial-Anzeige am nächsten natürlichen Haltepunkt in Ihrer App anzeigen:

if (interstitial_ad->LoadAdLastResult().status() ==
    firebase::kFutureStatusComplete &&
    interstitial_ad->LoadAdLastResult().error() ==
    firebase::admob::kAdMobErrorNone) {
  interstitial_ad->Show();
}

Sie können auch Rückrufe registrieren, die nach Abschluss einer Zukunft aufgerufen werden sollen. Dieses Code-Snippet verwendet einen Funktionszeiger für den Rückruf:

// Initialize the interstitial ad.
interstitial_ad->Initialize(static_cast<firebase::admob::AdParent>(my_ad_parent), kInterstitialAdUnit);

// Registers the OnCompletion callback. user_data is a pointer that is passed verbatim
// to the callback as a void*. In this example, we pass the interstitial ad object to be
// used in the OnCompletionCallback function.
interstitial_ad->InitializeLastResult().OnCompletion(OnCompletionCallback, interstitial_ad /*user_data*/);

// The OnCompletion callback function.
static void OnCompletionCallback(const firebase::Future<void>& future, void* user_data) {
  // Called when the Future is completed for the last call to the InterstitialAd::Initialize()
  // method. If the error code is firebase::admob::kAdMobErrorNone, then you're ready to
  // load the interstitial ad.
  firebase::admob::InterstitialAd *interstitial_ad = static_cast<firebase::admob::InterstitialAd*>(user_data);
  if (future.error() == firebase::admob::kAdMobErrorNone) {
    interstitial_ad->LoadAd(my_ad_request);
  }
}

Verwenden Sie einen Listener, um über Ereignisse im Anzeigenlebenszyklus informiert zu werden

AdMob bietet eine abstrakte BannerView::Listener Klasse, die Sie erweitern und an die BannerView::SetListener() -Methode übergeben können, um über Änderungen des Präsentationsstatus und des Begrenzungsrahmens einer BannerView::SetListener() zu werden. Eine ähnliche abstrakte InterstitialAd::Listener Klasse wird auch für Interstitial-Anzeigen bereitgestellt, die erweitert werden können, um über Änderungen am Präsentationsstatus einer Interstitial-Anzeige informiert zu werden.

Im Folgenden finden Sie eine Beispielimplementierung einer Klasse, die die BannerView::Listener Klasse erweitert (eine ähnliche Implementierung kann für Interstitial-Anzeigen verwendet werden):

class ExampleBannerViewListener
    : public firebase::admob::BannerView::Listener {
public:
  ExampleBannerViewListener() {}

  void OnPresentationStateChanged(
      firebase::admob::BannerView* banner_view,
      firebase::admob::BannerView::PresentationState state) override {
    // This method gets called when the banner view's presentation
    // state changes.
  }

  void OnBoundingBoxChanged(
      firebase::admob::BannerView* banner_view,
      firebase::admob::BoundingBox box) override {
    // This method gets called when the banner view's bounding box
    // changes.
  }
};

Was kommt als nächstes

Erfahren Sie, wie Sie Ihre App mit AdMob monetarisieren und die in diesem Handbuch verwendeten Test-Anzeigenblock-IDs durch Ihre eigenen Anzeigenblock-IDs ersetzen.