Google is committed to advancing racial equity for Black communities. See how.
Bu sayfa, Cloud Translation API ile çevrilmiştir.
Switch to English

Başlamak

C ++ uygulamalarınızda reklamları görüntülemek için AdMob'u kullanabilirsiniz. Bu kılavuz, Firebase ile nasıl entegre olacağınızı ve Google Mobile Ads SDK'sıyla nasıl etkileşim kuracağınızı gösterir.

Bu kılavuzu ilk kez inceliyorsanız , AdMob test uygulamasını indirip takip etmeniz önerilir.

Firebase ile entegre edin

  1. AdMob ve Firebase'i C ++ uygulamanıza eklemek için iOS için Kurulum veya Android için Kurulum bölümlerindeki adımları tamamlayın.

  2. Uygulamanızın C ++ koduna aşağıdaki üstbilgileri ekleyin:

    #include "firebase/admob.h"
    #include "firebase/admob/types.h"
    #include "firebase/app.h"
    #include "firebase/future.h"
    
  3. AdMob kitaplığını AdMob uygulama kimliğinizle başlatmak için uygulamanızda C ++ koduna aşağıdakileri ekleyin (bu kod, bir banner görünümü veya geçiş reklamı oluşturmadan önce yürütülmelidir):

    #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);
    

Google Mobile Ads SDK ile etkileşimde bulunun

Reklam birimi kimliklerini ayarlayın

Hem iOS hem de Android'de desteklenen C ++ kodunu yazarken, yalnızca belirli bir işletim sisteminde derlenmesi gereken kodu tanımlamak için önişlemci yönergelerini kullanmanız gerekebilir. Hem iOS hem de Android'de banner ve geçiş reklamları görüntülemek için, her işletim sistemi ve her benzersiz reklam yerleşimi için yeni bir reklam birimi kimliği oluşturmanız önerilir. Aşağıdaki reklam birimi kimlikleri iOS ve Android için oluşturulmuştur ve her zaman test reklamları sunacak şekilde yapılandırılmıştır:

#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

Bir banner görünümü ayarlayın

Aşağıdaki başlığı uygulamanızın C ++ koduna ekleyin:

#include "firebase/admob/banner_view.h"

Bir BannerView nesnesini BannerView ve BannerView :

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

Bir AdSize oluşturun ve banner görünümünü 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);

Geçiş reklamı oluşturun

Aşağıdaki başlığı uygulamanızın C ++ koduna ekleyin:

#include "firebase/admob/interstitial_ad.h"

Bir InterstitialAd nesnesini bildirin ve örnekleyin:

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

Geçiş reklamını başlatın:

// 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);

AdMob reklam isteği oluşturun

AdMob kitaplığı, bir reklam isteğine özel hedefleme bilgileri sağlamanıza olanak tanır. Bu, bir AdRequest yapısının üyelerini belirleyerek yapılır. Yapı daha sonra BannerView::LoadAd() veya InterstitialAd::LoadAd() yöntemine InterstitialAd::LoadAd() .

Reklam isteklerini hedefleme ve özelleştirme hakkında genel bilgiler için iOS ve Android Hedefleme kılavuzlarımıza bakın.

BannerView ve InterstitialAd tarafından reklam isteğinde bulunmak için kullanılan AdRequest yapısı aşağıda AdRequest :

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;
};

AdRequest yapısını AdRequest ve AdRequest :

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

Aşağıdaki kod, reklam isteğine hedefleme bilgileri eklemek için AdRequest yapısının üye değerlerini ayarlar:

// 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 yapısını BannerView::LoadAd() ve Interstitial::LoadAd() yöntemlerine 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.

Yöntem çağrılarının tamamlanma durumunu izlemek için Vadeli İşlemleri kullanın

Vadeli işlemler, önceki BannerView veya InterstitialAd yöntemi çağrılarınızın tamamlanma durumunu belirlemeniz için bir yol sağlar. Örneğin, InterstitialAd::LoadAd() yöntemine bir çağrı yapıldığında, yeni bir Future oluşturulur ve döndürülür. Uygulamalar, reklamın ne zaman yüklendiğini belirlemek için Geleceğin durumunu sorgulayabilir. Gelecek tamamlandığında, geçiş reklamı uygulamanızdaki bir sonraki doğal durma noktasında gösterilmeye hazırdır.

BannerView ve InterstitialAd sınıflarındaki çoğu yöntem, uygulamaların belirli bir eylem için en son Geleceği almak üzere kullanabileceği karşılık gelen bir "son sonuç" yöntemine sahiptir. Örneğin, InterstitialAd::LoadAd() yöntemi, InterstitialAd::LoadAdLastResult() adında karşılık gelen bir yönteme sahiptir. InterstitialAd::LoadAd() yöntemine yapılan son çağrının durumunu kontrol etmek için kullanılabilecek bir Future döndürür.

Benzer şekilde, uygulamalar BannerView::InitializeLastResult() yöntemine yapılan son çağrının durumunu (ve varsa hata kodunu) temsil eden bir Geleceği almak için BannerView::Initialize() yöntemini kullanabilir. Durumu tamamlanmışsa ve hata kodu firebase::admob::kAdMobErrorNone , BannerView::Show() yöntemini çağırarak banner görünümünü görünür hale getirmeye hazırsınız:

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

BannerView::Show() yöntemine yapılan son çağrı için Geleceğin durumu tamamlandığında, banner görünümüne bir reklam yüklemeye hazırsınız:

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

Geçiş reklamları için, InterstitialAd::InitializeLastResult() yöntemine yapılan son çağrının durumunu (ve varsa hata kodunu) temsil eden bir Geleceği almak için InterstitialAd::Initialize() yöntemini kullanın. Durumu tamamlanmışsa ve hata kodu firebase::admob::kAdMobErrorNone , geçiş reklamını yüklemeye hazırsınız demektir:

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

InterstitialAd::LoadAd() yöntemine yapılan son çağrı için Geleceğin durumu tamamlandığında, geçiş reklamını uygulamanızdaki bir sonraki doğal durma noktasında görüntülemeye hazır olursunuz:

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

Bir Gelecek tamamlandığında çağrılacak geri aramaları da kaydedebilirsiniz. Bu kod parçacığı, geri arama için bir işlev işaretçisi kullanır:

// 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);
  }
}

Reklam yaşam döngüsü olaylarından haberdar olmak için bir dinleyici kullanın

AdMob, bir banner görünümünün sunum durumu ve sınırlayıcı kutusundaki değişikliklerden haberdar olmak için genişletebileceğiniz ve BannerView::SetListener() yöntemine iletebileceğiniz soyut bir BannerView::Listener sınıfı sağlar. Benzer bir soyut InterstitialAd::Listener sınıfı, bir geçiş reklamının sunum durumundaki değişikliklerden haberdar edilmek üzere genişletilebilen geçiş reklamları için de sağlanmıştır.

Aşağıda, BannerView::Listener sınıfını genişleten örnek bir sınıf uygulaması verilmiştir (benzer bir uygulama geçiş reklamları için kullanılabilir):

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

Sıradaki ne

Uygulamanızdan AdMob ile nasıl para kazanacağınızı öğrenin ve bu kılavuzda kullanılan test reklam birimi kimliklerini kendi reklam birimi kimliklerinizle değiştirdiğinizden emin olun.