ההפצה של Firebase C++ SDK v9.1.0 מציגה SDK חדש של Google Mobile Ads C++ SDK.
Google Mobile Ads C++ SDK הוא משטח API חדש המשלב את השינויים הפורצים הגדולים שבוצעו ב-Firebase AdMob C++ SDK עבור iOS ו-Android בשנים 2021 ו-2022, כולל הסרה של ממשקי API שהוצאו משימוש, וזרימה חדשה בעבודה עם מודעות במסך מלא סוגים.
ה-SDK הישן של Firebase AdMob C++ ( firebase::admob
) סומן שהוצא משימוש ולא יקבל עדכונים או תיקוני באגים בהמשך.
הן ה-SDK החדש של Google Mobile Ads C++ ( firebase::gma
) והן ה-SDK הישן של Firebase AdMob C++ ( firebase::admob
) יישארו חלק מארכיון ה-build עבור Firebase C++ SDK במהלך חלון ההוצאה משימוש של Firebase AdMob C++ SDK.
הסרת API מדור קודם
ממשקי ה-API הבאים הוסרו מ-Google Mobile Ads C++ SDK בשלמותם.
RewardedVideoAd
מרחב השמות RewardedVideoAd
של AdMob הוחלף במחלקה RewardedAd
. RewardedAd
מתנהג באופן דומה ל- InterstitialAd
אך כולל RewardedAdListener
נוסף כדי לקבל הודעה על תגמולים על פריטים.
NativeExpressAds
NativeExpressAd
של AdMob כבר סומנה כמוצאה משימוש בכל Firebase AdMob C++ SDK. לכן NativeExpressAd
אינה כלולה ב-Google Mobile Ads C++ SDK החדש.
שינוי מרחב השמות של SDK
ה-SDK עבר למרחב שמות חדש, ויש לו מבנה ספריות חדש:
מרחב שמות firebase::gma
המקורות של Google Mobile Ads C++ SDK החדש נמצאים במרחב השמות firebase::gma
. מרחב השמות הישן יותר firebase::admob
הוצא משימוש יחד עם Firebase AdMob C++ SDK.
מבנה ספריות
קובצי כותרות הועברו לספרייה חדשה בתוך ארכיון ה-build:
הוצא משימוש Firebase AdMob C++ SDK | Google Mobile Ads C++ SDK חדש |
---|---|
include/firebase/admob | include/firebase/gma |
סִפְרִיָה
ה-SDK של Firebase AdMob C++ יסופק כספרייה סטטית בתוך ארכיון ה-Build של Firebase C++ SDK:
iOS
הוצא משימוש Firebase AdMob C++ SDK | Google Mobile Ads C++ SDK חדש |
---|---|
firebase_admob.xcframework | firebase_gma.xcframework |
דְמוּי אָדָם
הוצא משימוש Firebase AdMob C++ SDK | Google Mobile Ads C++ SDK חדש |
---|---|
libfirebase_admob.a | libfirebase_gma.a |
הגירות מחלקות, רשימות ומבנים
הטבלה שלהלן מפרטת מחלקות, רשימות ומבנים ספציפיים שהשתנו או הוסרו. הנה תקציר:
- שמו
BannerView
שונה ל-AdView
. -
NativeAdExpressView
הוסר. - מרחב השמות
RewardedVideo
מוחלף במחלקהRewardedAd
. - ספירת
PresentationState
והמאזינים מוסרים ומוחלפים במאזיניAdListener
ו-FullScreenContent
. הפרמטרים הבאים מוסרים כפרמטרים של תצורה לכל מודעה ב-
AdRequests
:- התצורה של מזהי מכשירי הבדיקה
- מיקוד פרסומות על סמך גיל
במקום זאת, כעת ניתן להגדיר את הפרמטרים הללו ב-
RequestConfiguration
שהיא הגדרה גלובלית שתשפיע על כל הטעינות הבאות של המודעות.
firebase::admob namespace הוצא משימוש | firebase::gma namespace |
---|---|
AdSizeType (enum) | AdSize::Type (enum) |
BannerView | AdView |
BannerView::Listener | AdListener AdViewBoundingBoxListener PaidEventListener |
BannerView::Position | AdView::Position |
BannerView::PresentationState | הוסר |
ChildDirectedTreatmentState | RequestConfiguration::TagForChildDirectedTreatment |
Gender (סימון) | הוסר |
InterstitialAd::Listener | FullScreenContentListener PaidEventListener |
KeyValuePair | הוסר |
NativeExpressAdView | הוסר |
PollableRewardListener | הוסר |
RewardItem | AdReward |
RewardedVideoAd (מרחב שמות) | RewardedAd (כיתה) |
RewardedVideoAd::Listener | FullScreenContentListener PaidEventListener UserEarnedRewardListener |
AdMobError (enum) | AdErrorCode (enum) |
RewardItem | AdReward |
אתחול SDK
כל פונקציית אתחול של Google Mobile Ads C++ SDK מחזירה מיד שני מחווני סטטוס:
פרמטר יציאה אופציונלי מעביר אם אירעה שגיאת תלות לפני תחילת תהליך האתחול.
פרמטר ההחזרה הוא הפניה ל-
firebase::Future
.Future
מכיל את תוצאות האתחול האסינכרוני של מתאמי התיווך במכשיר.
בעוד ש-Google Mobile Ads C++ SDK עשויה להיות מופעלת כדי לטעון מודעות המוצגות ב-AdMob ברגע שפונקציית האתחול חוזרת, רשתות מודעות אחרות לא יציגו מודעות עד שהמתאם המתאים שלהן יעבור אתחול מלא. תהליך זה מתרחש באופן אסינכרוני. לכן, אם אתה משתמש בתיווך מודעות ביישום שלך, אנו ממליצים להמתין עד Future
יפתר לפני שתנסה לטעון מודעות כלשהן.
לפני
firebase::App* app = ::firebase::App::Create();
firebase::InitResult result = firebase::admob::Initialize(*app, kAdMobAppID);
if (result != kInitResultSuccess) {
// Initialization immediately failed, most likely due to a missing dependency.
// Check the device logs for more information.
return;
}
לאחר
using firebase::App;
using firebase::Future;
using firebase::gma::AdapterInitializationStatus;
App* app = ::firebase::App::Create();
firebase::InitResult result;
Future<AdapterInitializationStatus> future =
firebase::gma::Initialize(*app, &result);
if (result != kInitResultSuccess) {
// Initialization immediately failed, most likely due to a missing dependency.
// Check the device logs for more information.
return;
}
// Poll the future to wait for its completion either in this
// thread, or as part of your game loop by calling
// firebase::gma::InitializeLastResult();
while (future.status() == firebase::kFutureStatusPending) {
// Initialization on-going, continue to wait.
}
// future.status() is either kFutureStatusComplete or there’s an error
if (future.status() == firebase::kFutureStatusComplete &&
future.error() == firebase::gma::AdErrorCodeNone) {
AdapterInitializationStatus* status = future.result();
// Check status for any mediation adapters you wish to use.
// ..
} else {
// Handle initialization error.
}
שינויים ב- AdSize
בתוך AdView
AdSize
מכיל כעת חברים סטטיים בגדלים נפוצים של מודעות באנר, ותומך בגדלי מודעות AnchorAdaptive
ו- InlineAdaptive
בעלי גובה דינמי המבוסס על הרוחב הנתון והכיוון הנוכחי של המסך.
קבועים סטטיים AdSize שנוספו ל- firebase::gma::AdSize | |
---|---|
AdSize::kBanner | גודל מודעת באנר של Mobile Marketing Association (MMA) (320x50 פיקסלים בלתי תלויים בצפיפות) |
AdSize::kFullBanner | Interactive Advertising Bureau (IAB) גודל מודעת באנר מלא (468x60 פיקסלים בלתי תלויים בצפיפות) |
AdSize::kLargeBanner | גרסה גבוהה יותר של kBanner , בדרך כלל 320x100 |
AdSize::kLeaderboard | גודל מודעת Leaderboard של Interactive Advertising Bureau (IAB) (728x90 פיקסלים בלתי תלויים בצפיפות) |
AdSize::kMediumRectangle | Interactive Advertising Bureau (IAB) גודל מודעת מלבן בינוני (300x250 פיקסלים בלתי תלויים בצפיפות) |
שיטות סטטיות ב- firebase::gma::AdSize כדי לסייע בבניית מופעים של AdSize | |
---|---|
GetLandscapeAnchoredAdaptiveBannerAdSize | יוצר AdSize עם הרוחב הנתון וגובה מותאם ל-Google כדי ליצור מודעת באנר במצב לרוחב |
GetPortraitAnchoredAdaptiveBannerAdSize | יוצר AdSize עם הרוחב הנתון וגובה מותאם ל-Google ליצירת מודעת באנר במצב דיוקן |
GetCurrentOrientationAnchoredAdaptiveBannerAdSize | יוצר AdSize עם הרוחב הנתון וגובה המותאם ל-Google כדי ליצור מודעת באנר בהתחשב בכיוון הנוכחי |
GetInlineAdaptiveBannerAdSize | יוצר AdSize המתאים ביותר למודעות באנר עם גובה מקסימלי |
GetLandscapeInlineAdaptiveBannerAdSize | יוצר InlineAdaptive AdSize עם הרוחב הנתון וגובה המכשיר לרוחב |
GetPortraitInlineAdaptiveBannerAdSize | יוצר InlineAdaptive AdSize עם הרוחב הנתון וגובה המכשיר לאורך. |
GetCurrentOrientationInlineAdaptiveBannerAdSize | שיטה נוחה להחזרת InlineAdaptive AdSize בהינתן כיוון הממשק הנוכחי בהינתן רוחב ספציפי. |
לפני
firebase::admob::BannerView* banner_view = new firebase::admob::BannerView();
firebase::admob::AdSize ad_size;
ad_size.ad_size_type = firebase::admob::kAdSizeStandard;
ad_size.width = 320;
ad_size.height = 50;
// ad_parent is a reference to an iOS UIView or an Android Activity.
// banner_ad_unit is your ad unit id for banner ads.
banner_view->Initialize(ad_parent, banner_ad_unit, ad_size);
לאחר
firebase::gma::AdView* ad_view = new firebase::gma::AdView();
// ad_parent is a reference to an iOS UIView or an Android Activity.
// banner_ad_unit is your ad unit id for banner ads.
banner_view->Initialize(ad_parent, banner_ad_unit, firebase::gma::AdSize.kBanner);
AdRequest
ותצורה גלובלית
מזהי מכשירי בדיקה, TagForChildDirectedTreatment
ו- TagForUnderAgeOfConsent
(שטופלו בעבר על ידי יום הולדת) הוסרו מ- AdRequest
והם כעת חלק מ- RequestConfiguration
גלובלי. יישומים עשויים להפעיל את firebase::gma::SetRequestConfiguration()
בשלב מוקדם במחזור החיים של היישום כדי להגדיר ערכים אלה. כל פעולות הטעינה הבאות של מודעות יכבדו את ההגדרות האלה לאחר הגדרתן.
firebase::gma::AdRequest
עדיין קיים מכיוון שהוא מספק מידע הקשרי לטעינת פרסומות, כולל מילות מפתח וכתובת אתר אופציונלית לתוכן.
המבנה בסגנון AdRequest
C של AdMob הוחלף במחלקה עם שיטות המספקות חווית משתמש טובה יותר בעת הגדרה והוספה לרשימות המידע השונות.
הנה שינויים בולטים AdRequest
:
- תוספות משויכות כעת לשם מחלקה של מתאם תיווך. תוספות הנשלחות לשירות AdMob צריכות להשתמש בשם המחלקה המוגדרת כברירת מחדל כפי שמוגדר להלן.
- כאשר מבקשים מודעה, אפליקציות עשויות להעביר כתובת URL של התוכן שהן מציגות. זה מאפשר למיקוד לפי מילות מפתח להתאים את המודעה לתוכן אחר המוצג.
לפני
firebase::admob::AdRequest request;
// Keywords to be used in targeting.
const char* keywords[] = {"GMA", "C++", "Fun"};
request.keyword_count = sizeof(keywords) / sizeof(keywords[0]);
request.keywords = keywords;
// "Extra" key value pairs.
static const firebase::admob::KeyValuePair extras[] = {
{"extra_name", "extra_value"}};
request.extras_count = sizeof(extras) / sizeof(extras[0]);
request.extras = kRequestExtras;
// Devices that should be served test ads.
const char* test_device_ids[] ={ "123", "4567", "890" };
request.test_device_id_count =
sizeof(test_device_ids) / sizeof(test_device_ids[0]);
request.test_device_ids = test_device_ids;
// Sample birthday to help determine the age of the user.
request.birthday_day = 10;
request.birthday_month = 11;
request.birthday_year = 1975;
// Load Ad with the AdRequest.
לאחר
// Do once after Google Mobile Ads C++ SDK initialization.
// These settings will affect all Ad Load operations.
firebase::gma::RequestConfiguration configuration;
configuration.max_ad_content_rating =
firebase::gma::RequestConfiguration::kMaxAdContentRatingPG;
configuration.tag_for_child_directed_treatment =
firebase::gma::RequestConfiguration::kChildDirectedTreatmentTrue;
configuration.tag_for_under_age_of_consent =
firebase::gma::RequestConfiguration::kUnderAgeOfConsentFalse;
configuration.test_device_ids.push_back("1234");
configuration.test_device_ids.push_back("4567");
configuration.test_device_ids.push_back("890");
firebase::gma::SetRequestConfiguration(configuration);
// Then, more information must be provided via an AdRequest when
// loading individual ads.
firebase::gma::AdRequest ad_request;
// "Extra" key value pairs.
ad_request.add_keyword("GMA");
ad_request.add_keyword("C++");
ad_request.add_keyword("Fun");
// Content URL.
ad_request.set_content_url("www.example.com");
// Mediation Adapter Extras.
#if defined(Android)
const char* ad_network_extras_class_name =
"com/google/ads/mediation/admob/AdMobAdapter";
#else // iOS
const char* ad_network_extras_class_name = "GADExtras";
#endif
ad_request.add_extra(ad_network_extras_class_name, "extra_name", "extra_value");
// Load Ad with the AdRequest. See next section.
AdResults
LoadAd
מחזירה כעת Future
המכיל אובייקט AdResult
עבור כל סוגי המודעות AdView
, InterstitialAd
ו- RewardedAd
. השיטה AdResult::is_successful
מחזירה true
אם בקשת המודעה מולאה בהצלחה, או false
אם לא.
במקרה של כשל, ה- AdResult
מכיל אובייקט AdError
עם מידע ברמת השירות על הבעיה, כולל קוד השגיאה, הודעת השגיאה ומחרוזות הדומיין.
לפני
firebase::Future<AdResult> future;
void load_ad() {
// Assume an already created AdRequest object.
future = ad_view->LoadAd(ad_request);
}
void your_game_loop() {
if (future.status() == firebase::kFutureStatusComplete) {
if(future.error() != firebase::admob::kAdMobErrorNone) {
// There was either an internal SDK issue that caused the Future to
// fail its completion, or AdMob failed to fulfill the ad request.
// Details are unknown other than the Future’s error code returned
// from future.error().
} else {
// The ad loaded successfully.
}
}
}
לאחר
firebase::Future<AdResult> future;
void load_ad() {
// Assumes a previously created AdRequest object.
// See "AdRequest and Global Configuration" above.
future = ad_view->LoadAd(ad_request);
}
void your_game_loop() {
// Check the future status in your game loop:
if (future.status() == firebase::kFutureStatusComplete) {
if(future.error() != firebase::admob::kAdErrorCodeNone) {
// There was an internal SDK issue that caused the Future to fail.
} else {
// Future completed successfully. Check the GMA result.
const AdResult* ad_result = future.result();
if ( ad_result->is_successful() != true ) {
// GMA failed to serve an ad. Gather information about the error.
const AdError& ad_error = ad_result->ad_error();
AdErrorCode error_code = ad_error.code();
const std::string error_domain = ad_error.domain();
const std::string error_message = ad_error.message();
} else {
// The ad loaded successfully.
}
}
}
}
אירועי AdListener
בתוך AdView
מחלקת BannerView::Listener
של AdMob הוחלפה בשתי מחלקות מאזינים נפרדות ב-Google Mobile Ads C++ SDK:
-
AdListener
עוקב אחר מחזור חיי המודעה ואירועי אינטראקציה של משתמשים. -
AdViewBoundingBoxListener
מופעל כאשר ה-AdView
משתנה או מזיזים אותו.
AdMob OnPresentationStateChanged
השתנה מיפויים של מודעות Google לנייד
הסוג המצוין firebase::admob::BannerView::PresentationState
ושיטת האזנה OnPresentationStateChanged
אינם כלולים ב-Google Mobile Ads C++ SDK החדש.
להלן דרכים חלופיות לזיהוי שינויים במצב מצגת במחזור החיים של AdView
:
firebase::admob::BannerView::Listener OnPresentationStateChanged אירוע השתנה | firebase::gma::AdListener מקביל |
---|---|
kPresentationStateHidden | כאשר AdListener::OnAdClosed מופעל, או כאשר AdView::Hide() משלים את הפעולה הא-סינכרונית שלו בהצלחה |
kPresentationStateVisibleWithoutAd | אף אחד. ניסיון להפעיל AdView::Show() AdView לא טעון יגרום לשגיאה. |
kPresentationStateVisibleWithAd | כאשר AdListener::OnAdOpened מופעל, או כאשר AdView::Show() משלים את הפעולה הא-סינכרונית בהצלחה עם מודעה |
kPresentationStateOpenedPartialOverlay | שאל את התיבה התוחמת לאחר הפעלת AdListener::OnAdOpened() כדי לקבוע את הגודל והמיקום של המודעה המוצגת. לחלופין, בצע שאילתה על המיקום וה- AdSize של AdView ו/או פקח על התיבה התוחמת באמצעות AdViewBoundingBoxListener . |
kPresentationStateCoveringUI | ראה kPresentationStateOpenedPartialOverlay למעלה |
RewardedAd
היא כעת כיתה
ה-SDK של Firebase AdMob C++ שהוצא משימוש אפשרה מודעות מתגמלות באמצעות אוסף של פונקציות במרחב השמות של firebase::admob::rewarded_ad
. פונקציות אלו אוחדו לכדי מחלקה חדשה RewardedAd
שמגישה מודעות עם משטח API דומה לזה של InterstitialAd
(ראה בסעיף הבא).
מאזיני מודעות InterstitialAd
ופרסומות RewardedAd
הן מודעות ביניים והן מודעות מתגמלות נחשבות למודעות במסך מלא. ניתן להתקין FullScreenContentListener
חדש כדי להאזין לאירועי מחזור חיים של פרסומות עבור סוגי מודעות אלו, וניתן להתקין PaidEventListener
נפרד כדי לעקוב אחר מתי שירות AdMob חשב שהתרחש אירוע בתשלום.
RewardedAd
יש מאזין נוסף למעקב אחר אירועי תגמול שנצברו על ידי המשתמש.
שיטות חדשות להתקשרות חוזרת של מודעות במסך מלא
שיטות FullScreenContentListener | שיטות PaidEventListener | שיטות UserEarnedRewardListener |
---|---|---|
OnAdClicked | OnPaidEvent | OnUserEarnedReward |
OnAdDismissedFullScreenContent | ||
OnAdFailedToShowFullScreenContent | ||
OnAdImpression | ||
OnAdShowedFullScreenContent |
השיטות השתנו/הוסרו/הוחלפו
הטבלה שלהלן מפרטת את השיטות הספציפיות ששונו ב-Google Mobile Ads C++ SDK החדש. שיטות עם פרמטרים רשומים נותרו אך החתימות שלהן השתנו.
מעמד | Firebase AdMob C++ SDK API | Google Mobile Ads C++ SDK API | הערות |
---|---|---|---|
BannerView | MoveTo | AdView::SetPosition | |
presentation_state | הוסר | מטופל על ידי אירועי AdViewListener ו- AdView::Show ו- AdView::Hide תוצאות עתידיות. | |
SetListener | AdView::SetAdListener AdView::SetBoundingBoxListener AdView::SetPaidEventListener | עיצוב המאזין החדש מגביר את האמינות של זיהוי אירועים במחזור החיים AdView . | |
Listener::OnPresentationStateChanged | הוסר | ראה את BannerView::SetListener למעלה. | |
Listener::OnBoundingBoxChanged | AdViewBoundingBoxListener::OnBoundingBoxChanged | ||
מודעת ביניים | Initialize(AdParent parent, const char* ad_unit_id) | Initialize(AdParent parent) | הפרמטר ad_unit_id הוא כעת חלק מפעולת LoadAd . |
LoadAd(const AdRequest& request) | LoadAd(const char* ad_unit_id, const AdRequest& request) | ||
presentation_state | הוסר | ספירת presentation_state הוסרה. השתמש FullScreenContentListener . | |
SetListener | SetFullScreenContentListener SetPaidEventListener | ||
Destroy | הוסר | ניקוי משאבים הוא כעת חלק מ- RewardedAd destructor. | |
RewardedAd (רִשְׁמִית RewardedVideoAd ) | Initialize | Initialize(AdParent parent) | AdParent הועברה בעבר ל- Show , אך היא כעת חלק מהאתחול. |
presentation_state | הוסר | ספירת presentation_state הוסרה. השתמש FullScreenContentListener . | |
SetListener | SetFullScreenContentListener SetPaidEventListener Show | מאזין UserEarnedReward מוגדר גם בעת הצגת מודעת RewardedAd . ראה למטה. | |
Show(AdParent parent) | Show(UserEarnedRewardListener* listener) |