Join us for Firebase Summit on November 10, 2021. Tune in to learn how Firebase can help you accelerate app development, release with confidence, and scale with ease. Register

להתחיל

תוכל להשתמש ב- AdMob להצגת מודעות באפליקציות C ++ שלך. מדריך זה מראה לך כיצד להשתלב עם Firebase ואינטראקציה עם SDK של מודעות Google לנייד.

אם זו הפעם הראשונה שלך עוברת את המדריך הזה, זה מומלץ להוריד ופעלת יחד באמצעות האפליקציה לבדיקת AdMob .

השתלב עם Firebase

  1. השלם את שלבי ההתקנה עבור iOS או ההגדרה של 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 והן באנדרואיד, ייתכן שיהיה עליך להשתמש בהוראות קדם -מעבד כדי להגדיר קוד אותו יש לערוך רק במערכת הפעלה ספציפית. להצגת מודעות באנר ומודעות ביניים הן ב- 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 ו לאתחל את התצוגה הבאנר:

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 struct. ה struct לאחר מכן עבר אל BannerView::LoadAd() או InterstitialAd::LoadAd() שיטה.

לקבלת מידע כללי על מיקוד והתאמה אישי בבקשות מודעות, לבדוק שלנו iOS ו- Android מדריכי כוונת.

הנה AdRequest struct בשימוש על ידי 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 struct:

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

הקוד הבא מגדיר את ערכי חבר AdRequest struct להוסיף מיקוד מידע על בקשת המודעה:

// 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 struct אל 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 לספק לך דרך לקבוע את מעמד הסיום הקודם שלך BannerView או InterstitialAd שיחות שיטה. כאשר מתבצעת שיחה אל InterstitialAd::LoadAd() שיטה, למשל, עתיד חדש נוצר וחזר. אפליקציות יכולות לבחון את סטטוס העתיד כדי לקבוע מתי המודעה נטענת. לאחר השלמת העתיד, מודעת הביניים מוכנה להצגה בנקודת העצירה הטבעית הבאה באפליקציה שלך.

רוב השיטות של BannerView ו InterstitialAd כיתות יש שיטה "האחרונה תוצאה" מתאימה כי יישומים יכולים להשתמש כדי לאחזר את העתיד האחרון עבור פעולה מסוימת. InterstitialAd::LoadAd() השיטה, למשל, יש שיטה מתאימה שנקראת InterstitialAd::LoadAdLastResult() . היא מחזירה עתיד שיכול לשמש כדי לבדוק את מצב הקריאה האחרונה אל InterstitialAd::LoadAd() השיטה.

בדומה לכך, אפליקציות יכולות להשתמש BannerView::InitializeLastResult() שיטה לקבלת עתיד המייצג את המעמד (ואת קוד השגיאה, אם בכלל) של השיחה האחרונה אל BannerView::Initialize() שיטה. אם מעמדה תושלם וקוד השגיאה שלה הוא firebase::admob::kAdMobErrorNone , אז אתה מוכן לעשות את התצוגה באנר גלוי על ידי קריאת BannerView::Show() השיטה:

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

לאחר מעמד של העתיד עבור השיחה האחרונה אל BannerView::Show() שיטה הושלמה, אז אתה מוכן לטעון מודעה לתוך הנוף הבאנר:

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

מודעות ביניים, השתמש InterstitialAd::InitializeLastResult() שיטה לקבלת עתיד המייצג את המעמד (ואת קוד השגיאה, אם בכלל) של השיחה האחרונה אל InterstitialAd::Initialize() השיטה. אם מעמדה תושלם וקוד שגיאה שלה הוא firebase::admob::kAdMobErrorNone , אז אתה מוכן לטעון את מודעת הביניים:

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

לאחר המעמד של העתיד עבור השיחה האחרונה אל InterstitialAd::LoadAd() שיטה הושלמה, אז אתה מוכן תוצג מודעת ביניים בנקודת העצירה הטבעית הבאה באפליקציה:

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

תוכל גם לרשום שיחות טלפון להתקשרות לאחר השלמת עתיד. קטע קוד זה משתמש במצביע פונקציות לחיוג החזרה:

// 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 ולוודא להחליף את מזהי יחידות מודעות בחינות המופיעים במדריך זה עם מזהי יחידת מודעות משלך.