Google is committed to advancing racial equity for Black communities. See how.
این صفحه به‌وسیله ‏Cloud Translation API‏ ترجمه شده است.
Switch to English

شروع کنید

برای نمایش تبلیغات در برنامه های C ++ خود می توانید از AdMob استفاده کنید. این راهنما نحوه ادغام با Firebase و تعامل با Google Mobile Ads SDK را به شما نشان می دهد.

اگر برای اولین بار است که از این راهنما استفاده می کنید ، توصیه می شود با استفاده از برنامه تست AdMob بارگیری و دنبال کنید.

با Firebase ادغام شوید

  1. مراحل را در بخش Setup for iOS یا Setup for Android به پایان برسانید تا AdMob و Firebase را به برنامه C ++ خود اضافه کنید.

  2. عناوین زیر را در کد C ++ برنامه خود قرار دهید:

    #include "firebase/admob.h"
    #include "firebase/admob/types.h"
    #include "firebase/app.h"
    #include "firebase/future.h"
    
  3. موارد زیر را به کد C ++ در برنامه خود اضافه کنید تا کتابخانه AdMob را با شناسه برنامه AdMob خود شروع کنید (این کد باید قبل از ایجاد یک نمایش بنر یا آگهی بینابینی اجرا شود):

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

تعامل با SDK تبلیغات موبایل Google

شناسه های واحد تبلیغات را تنظیم کنید

هنگام نوشتن کد C ++ که هم در iOS و هم در Android پشتیبانی می شود ، ممکن است لازم باشد که از دستورالعمل های پیش پردازنده برای تعریف کدی استفاده کنید که فقط باید در سیستم عامل خاص کامپایل شود. برای نمایش تبلیغات بنر و میان برنامه ای در iOS و Android ، توصیه می شود برای هر سیستم عامل و هر جایگذاری تبلیغات منحصر به فرد ، یک شناسه واحد تبلیغات جدید ایجاد کنید. شناسه های واحد تبلیغاتی زیر برای iOS و Android ایجاد شده اند و برای همیشه نمایش تبلیغات آزمایشی پیکربندی شده اند:

#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

نمای بنر را تنظیم کنید

عنوان زیر را به کد C ++ برنامه خود اضافه کنید:

#include "firebase/admob/banner_view.h"

اعلام و نمونه سازی یک شی BannerView :

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

AdSize ایجاد 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);

یک تبلیغ بینابینی تنظیم کنید

عنوان زیر را به کد C ++ برنامه خود اضافه کنید:

#include "firebase/admob/interstitial_ad.h"

اعلام و نمونه سازی یک شی InterstitialAd :

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

تبلیغات بینابینی را شروع کنید:

// 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 ایجاد کنید

کتابخانه AdMob به شما امکان می دهد اطلاعات هدف گیری سفارشی را به درخواست تبلیغ ارائه دهید. این کار با تنظیم اعضای یک ساختار AdRequest . سپس ساختار به روش BannerView::LoadAd() یا InterstitialAd::LoadAd() شود.

برای کسب اطلاعات عمومی در مورد هدف قرار دادن و سفارشی سازی درخواست های تبلیغاتی ، راهنماهای هدف گذاری iOS و Android ما را بررسی کنید.

در اینجا ساختار AdRequest که توسط یک BannerView و InterstitialAd برای ایجاد یک درخواست تبلیغ استفاده شده است:

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 اعلام و مقداردهی اولیه کنید:

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

کد زیر مقادیر عضو ساختار AdRequest برای افزودن اطلاعات هدف گذاری به درخواست تبلیغ تنظیم می کند:

// 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 به روش های BannerView::LoadAd() و 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.

از Futures برای نظارت بر وضعیت تکمیل تماس های متد استفاده کنید

Futures راهی برای تعیین وضعیت تکمیل تماس های قبلی BannerView یا InterstitialAd ارائه می دهد. به عنوان مثال وقتی تماس با روش InterstitialAd::LoadAd() شود ، Future جدید ایجاد و بازگردانده می شود. برنامه ها برای تعیین زمان بارگیری تبلیغ می توانند از وضعیت Future نظرسنجی کنند. پس از اتمام آینده ، تبلیغات میانه ای آماده نمایش در نقطه توقف طبیعی بعدی در برنامه شما است.

اکثر روشها در BannerView و InterstitialAd دارای یک روش "آخرین نتیجه" متناظر هستند که برنامه ها می توانند برای بازیابی Future جدیدترین نسخه برای یک اقدام معین استفاده کنند. InterstitialAd::LoadAd() روش، برای مثال، یک روش مربوط به نام InterstitialAd::LoadAdLastResult() . این یک Future را برمی گرداند که می تواند برای بررسی وضعیت آخرین تماس به روش InterstitialAd::LoadAd() استفاده شود.

به همین ترتیب ، برنامه ها می توانند از روش BannerView::InitializeLastResult() برای دریافت Future نمایانگر وضعیت (و کد خطا ، در صورت وجود) آخرین تماس به روش BannerView::Initialize() . اگر وضعیت آن کامل است و کد خطای آن firebase::admob::kAdMobErrorNone ، پس با فراخوانی روش BannerView::Show() توانید نمای بنر را نمایان کنید:

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

پس از تکمیل وضعیت Future برای آخرین تماس با روش BannerView::Show() ، آماده بارگیری آگهی در نمای بنر هستید:

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

برای تبلیغات بینابینی ، از روش InterstitialAd::InitializeLastResult() استفاده کنید تا Future را به عنوان وضعیت (و کد خطا در صورت وجود) آخرین تماس به روش InterstitialAd::Initialize() . اگر وضعیت آن کامل است و کد خطای آن firebase::admob::kAdMobErrorNone ، پس آماده بارگیری آگهی firebase::admob::kAdMobErrorNone هستید:

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

پس از اتمام وضعیت Future برای آخرین تماس با روش InterstitialAd::LoadAd() ، سپس آماده نمایش آگهی InterstitialAd::LoadAd() ای در نقطه توقف بعدی برنامه خود هستید:

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

شما همچنین می توانید تماس ها را ثبت کنید تا در صورت اتمام Future فراخوانی شوند. این قطعه کد از یک نشانگر عملکرد برای پاسخ به تماس استفاده می کند:

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

از یک شنونده استفاده کنید تا از وقایع چرخه عمر آگهی مطلع شوید

AdMob یک کلاس خلاصه BannerView::Listener می دهد که می توانید آن را گسترش داده و به روش BannerView::SetListener() تا از تغییرات وضعیت نمایش و جعبه محدوده نمایش بنر مطلع شوید. یک کلاس انتزاعی InterstitialAd::Listener نیز برای تبلیغات بینابینی ارائه شده است که می تواند برای اطلاع از تغییرات وضعیت ارائه تبلیغات میان دوره ای گسترش یابد.

در زیر نمونه ای از اجرای یک کلاس وجود دارد که کلاس BannerView::Listener گسترش می دهد (برای تبلیغات بینابینی می توان از یک اجرای مشابه استفاده کرد):

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

چه بعدی

با نحوه کسب درآمد از برنامه خود با AdMob آشنا شوید و مطمئن شوید که شناسه های واحد تبلیغاتی آزمایشی مورد استفاده در این راهنما را با شناسه های واحد تبلیغات خود جایگزین کنید.