Firebase C++ SDK v9.1.0 sürümü, yeni bir Google Mobile Ads C++ SDK'sını kullanıma sunuyor.
Google Mobile Ads C++ SDK'sı, kullanımdan kaldırılan API'lerin kaldırılması ve tam ekran reklamla çalışırken yeni bir akış dahil olmak üzere iOS ve Android için 2021 ve 2022'de Firebase AdMob C++ SDK'larında yapılan önemli değişiklikleri içeren yeni bir API yüzeyidir. türleri.
Eski Firebase AdMob C++ SDK'sı ( firebase::admob
) kullanımdan kaldırıldı olarak işaretlendi ve bundan sonra herhangi bir güncelleme veya hata düzeltmesi almayacaktır.
Hem yeni Google Mobile Ads C++ SDK'sı ( firebase::gma
) hem de eski Firebase AdMob C++ SDK'sı ( firebase::admob
), Firebase AdMob C++ SDK'nın kullanımdan kaldırılması dönemi boyunca Firebase C++ SDK'sının derleme arşivlerinin parçası olarak kalacak.
Eski API'nin kaldırılması
Aşağıdaki API'ler Google Mobile Ads C++ SDK'sından tamamen kaldırıldı.
RewardedVideoAd
AdMob'un RewardedVideoAd
ad alanı, RewardedAd
sınıfıyla değiştirildi. RewardedAd
InterstitialAd
benzer şekilde davranır ancak öğe ödülleriyle ilgili bildirim almak için ek bir RewardedAdListener
içerir.
NativeExpressAds
AdMob'un NativeExpressAd
her Firebase AdMob C++ SDK'sında zaten kullanımdan kaldırılmış olarak işaretlenmişti. Bu nedenle NativeExpressAd
yeni Google Mobile Ads C++ SDK'sına dahil değildir.
SDK ad alanı değişikliği
SDK yeni bir ad alanına taşındı ve yeni bir dizin yapısına sahip:
Ad alanı firebase::gma
Yeni Google Mobile Ads C++ SDK'nın kaynakları firebase::gma
ad alanındadır. Eski firebase::admob
ad alanı, Firebase AdMob C++ SDK'sıyla birlikte kullanımdan kaldırıldı.
Dizin yapısı
Başlık dosyaları derleme arşivindeki yeni bir dizine taşındı:
Kullanımdan Kaldırılan Firebase AdMob C++ SDK'sı | Yeni Google Mobil Reklamlar C++ SDK'sı |
---|---|
include/firebase/admob | include/firebase/gma |
Kütüphane
Firebase AdMob C++ SDK'sı, Firebase C++ SDK derleme arşivi içinde statik bir kitaplık olarak sağlanacaktır:
iOS
Kullanımdan Kaldırılan Firebase AdMob C++ SDK'sı | Yeni Google Mobil Reklamlar C++ SDK'sı |
---|---|
firebase_admob.xcframework | firebase_gma.xcframework |
Android
Kullanımdan Kaldırılan Firebase AdMob C++ SDK'sı | Yeni Google Mobil Reklamlar C++ SDK'sı |
---|---|
libfirebase_admob.a | libfirebase_gma.a |
Sınıf, numaralandırma ve yapı geçişleri
Aşağıdaki tabloda değişen veya kaldırılan belirli sınıflar, numaralandırmalar ve yapılar listelenmektedir. İşte bir özet:
-
BannerView
AdView
olarak yeniden adlandırıldı. -
NativeAdExpressView
kaldırıldı. -
RewardedVideo
ad alanı,RewardedAd
sınıfıyla değiştirildi. -
PresentationState
numaralandırması ve dinleyicileri kaldırılır veAdListener
veFullScreenContent
dinleyicileriyle değiştirilir. Aşağıdaki parametreler,
AdRequests
İsteklerinde reklam başına yapılandırma parametreleri olarak kaldırılır:- test cihazı kimliklerinin yapılandırması
- reklamların yaşa göre hedeflenmesi
Bunun yerine, bu parametreler artık sonraki tüm reklam yüklemelerini etkileyecek genel bir ayar olan
RequestConfiguration
yapılandırılabilir.
firebase::admob namespace kullanımdan kaldırıldı | Yeni firebase::gma namespace |
---|---|
AdSizeType (enum) | AdSize::Type (enum) |
BannerView | AdView |
BannerView::Listener | AdListener AdViewBoundingBoxListener PaidEventListener |
BannerView::Position | AdView::Position |
BannerView::PresentationState | Kaldırıldı |
ChildDirectedTreatmentState | RequestConfiguration::TagForChildDirectedTreatment |
Gender (numaralandırma) | Kaldırıldı |
InterstitialAd::Listener | FullScreenContentListener PaidEventListener |
KeyValuePair | Kaldırıldı |
NativeExpressAdView | Kaldırıldı |
PollableRewardListener | Kaldırıldı |
RewardItem | AdReward |
RewardedVideoAd (ad alanı) | RewardedAd (sınıf) |
RewardedVideoAd::Listener | FullScreenContentListener PaidEventListener UserEarnedRewardListener |
AdMobError (enum) | AdErrorCode (enum) |
RewardItem | AdReward |
SDK başlatma
Her Google Mobile Ads C++ SDK başlatma işlevi anında iki durum göstergesi döndürür:
İsteğe bağlı bir çıkış parametresi, başlatma işlemi başlamadan önce bir bağımlılık hatasının oluşup oluşmadığını iletir.
Return parametresi
firebase::Future
öğesine bir referanstır.Future
cihazdaki arabuluculuk bağdaştırıcılarının eşzamansız başlatılmasının sonuçlarını içerir.
Başlatma işlevi geri döner dönmez AdMob tarafından sunulan reklamları yüklemek için Google Mobile Ads C++ SDK'sı çağrılsa da, diğer reklam ağları, ilgili uyumlulaştırma bağdaştırıcıları tamamen başlatılana kadar reklam sunmayacaktır. Bu işlem eşzamansız olarak gerçekleşir. Bu nedenle, uygulamanızda reklam uyumlulaştırması kullanıyorsanız herhangi bir reklam yüklemeyi denemeden önce Future
çözümlenmesini beklemenizi öneririz.
Önce
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;
}
Sonrasında
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.
}
AdView
AdSize
yapılan değişiklikler
AdSize
artık yaygın banner reklam boyutlarının statik üyelerini içeriyor ve verilen genişliğe ve ekranın geçerli yönüne bağlı olarak dinamik bir yüksekliğe sahip olan AnchorAdaptive
ve InlineAdaptive
reklam boyutlarını destekliyor.
firebase::gma::AdSize statik AdSize sabitleri eklendi | |
---|---|
AdSize::kBanner | Mobil Pazarlama Derneği (MMA) banner reklam boyutu (320x50 yoğunluktan bağımsız piksel) |
AdSize::kFullBanner | İnteraktif Reklamcılık Bürosu (IAB) tam banner reklam boyutu (468x60 yoğunluktan bağımsız piksel) |
AdSize::kLargeBanner | kBanner daha uzun versiyonu, genellikle 320x100 |
AdSize::kLeaderboard | İnteraktif Reklamcılık Bürosu (IAB) lider tablosu reklam boyutu (728x90 yoğunluktan bağımsız piksel) |
AdSize::kMediumRectangle | İnteraktif Reklamcılık Bürosu (IAB) orta dikdörtgen reklam boyutu (300x250 yoğunluktan bağımsız piksel) |
firebase::gma::AdSize statik yöntemler, AdSize örnekleri oluşturmaya yardımcı olur | |
---|---|
GetLandscapeAnchoredAdaptiveBannerAdSize | Yatay modda banner reklam oluşturmak için verilen genişliğe ve Google tarafından optimize edilmiş yüksekliğe sahip bir AdSize oluşturur |
GetPortraitAnchoredAdaptiveBannerAdSize | Dikey modda banner reklam oluşturmak için verilen genişliğe ve Google tarafından optimize edilmiş yüksekliğe sahip bir AdSize oluşturur |
GetCurrentOrientationAnchoredAdaptiveBannerAdSize | Mevcut yönlendirmeye göre bir banner reklam oluşturmak için verilen genişliğe ve Google tarafından optimize edilmiş yüksekliğe sahip bir AdSize oluşturur |
GetInlineAdaptiveBannerAdSize | Maksimum yüksekliğe sahip banner reklamlar için en uygun AdSize oluşturur Bu |
GetLandscapeInlineAdaptiveBannerAdSize | Verilen genişliğe ve cihazın yatay yüksekliğine sahip bir InlineAdaptive AdSize oluşturur |
GetPortraitInlineAdaptiveBannerAdSize | Verilen genişliğe ve cihazın dikey yüksekliğine sahip bir InlineAdaptive AdSize oluşturur. |
GetCurrentOrientationInlineAdaptiveBannerAdSize | Belirli bir genişlik göz önüne alındığında, mevcut arayüz yönlendirmesi dikkate alındığında InlineAdaptive AdSize döndürmeye yönelik kullanışlı bir yöntem. |
Önce
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);
Sonrasında
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
ve genel yapılandırma
Test cihazı kimlikleri, TagForChildDirectedTreatment
ve TagForUnderAgeOfConsent
(daha önce doğum gününe göre işleniyordu) AdRequest
kaldırıldı ve artık global bir RequestConfiguration
parçası. Uygulamalar, bu değerleri yapılandırmak için uygulamanın yaşam döngüsünün başlarında firebase::gma::SetRequestConfiguration()
yöntemini çağırabilir. Sonraki tüm reklam yükleme işlemleri, yapılandırıldıktan sonra bu ayarları dikkate alacaktır.
firebase::gma::AdRequest
anahtar kelimeler ve isteğe bağlı içerik URL'si de dahil olmak üzere, reklamların yüklenmesine yönelik bağlamsal bilgiler sağladığı için hâlâ mevcuttur.
AdMob'un AdRequest
C tarzı yapısı, çeşitli bilgi listelerini tanımlarken ve eklerken daha iyi bir kullanıcı deneyimi sağlayan yöntemlerin bulunduğu bir sınıfla değiştirildi.
Dikkate değer AdRequest
değişiklikleri şunlardır:
- Ekstralar artık bir uyumlulaştırma bağdaştırıcısı sınıf adıyla ilişkilendiriliyor. AdMob hizmetine gönderilen ekstralar, aşağıda tanımlandığı gibi varsayılan sınıf adını kullanmalıdır.
- Uygulamalar, reklam isteğinde bulunurken sundukları içeriğin URL'sini iletebilir. Bu, anahtar kelime hedeflemenin reklamı görüntülenen diğer içerikle eşleştirmesini sağlar.
Önce
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.
Sonrasında
// 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
artık tüm AdView
, InterstitialAd
ve RewardedAd
reklam türleri için bir AdResult
nesnesi içeren bir Future
döndürüyor. AdResult::is_successful
yöntemi, reklam isteği başarıyla yerine getirildiyse true
değerini, değilse false
değerini döndürür.
Başarısızlık durumunda AdResult
, hata kodu, hata mesajı ve etki alanı dizeleri de dahil olmak üzere sorunla ilgili hizmet düzeyi bilgileri içeren bir AdError
nesnesi içerir.
Önce
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.
}
}
}
Sonrasında
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.
}
}
}
}
AdView
içindeki AdListener
etkinlikleri
AdMob'un BannerView::Listener
sınıfı, Google Mobile Ads C++ SDK'sında iki farklı dinleyici sınıfıyla değiştirildi:
-
AdListener
reklam yaşam döngüsünü ve kullanıcı etkileşimi olaylarını izler. -
AdView
yeniden boyutlandırıldığında veya taşındığındaAdViewBoundingBoxListener
çağrılır.
AdMob OnPresentationStateChanged
geri arama Google Mobil Reklam eşlemeleri
firebase::admob::BannerView::PresentationState
numaralandırılmış tür ve OnPresentationStateChanged
dinleyici yöntemi, yeni Google Mobile Ads C++ SDK'sına dahil değildir.
Aşağıda, bir AdView
yaşam döngüsündeki sunum durumu değişikliklerini tespit etmenin alternatif yolları verilmiştir:
firebase::admob::BannerView::Listener OnPresentationStateChanged olayı | firebase::gma::AdListener karşılığı |
---|---|
kPresentationStateHidden | AdListener::OnAdClosed çağrıldığında veya AdView::Hide() eşzamansız işlemini başarıyla tamamladığında |
kPresentationStateVisibleWithoutAd | Hiçbiri. Yüklenmemiş bir AdView AdView::Show() çağırmaya çalışmak bir hatayla sonuçlanacaktır. |
kPresentationStateVisibleWithAd | AdListener::OnAdOpened çağrıldığında veya AdView::Show() bir reklamla eşzamansız işlemini başarıyla tamamladığında |
kPresentationStateOpenedPartialOverlay | Gösterilen reklamın boyutunu ve konumunu belirlemek için AdListener::OnAdOpened() çağrıldıktan sonra sınırlayıcı kutuyu sorgulayın. Alternatif olarak, AdView konumunu ve AdSize sorgulayın ve/veya sınırlayıcı kutuyu AdViewBoundingBoxListener aracılığıyla izleyin. |
kPresentationStateCoveringUI | Yukarıdaki kPresentationStateOpenedPartialOverlay bakın |
RewardedAd
artık bir sınıf
Kullanımdan kaldırılan Firebase AdMob C++ SDK'sı, ödüllü reklamları firebase::admob::rewarded_ad
ad alanındaki bir dizi işlev aracılığıyla kolaylaştırdı. Bu işlevler, InterstitialAd
benzer API yüzeyine sahip reklamlar sunan yeni bir RewardedAd
sınıfında birleştirildi (sonraki bölüme bakın).
InterstitialAd
ve RewardedAd
dinleyicileri
Hem geçiş reklamları hem de ödüllü reklamlar, tam ekran reklamlar olarak kabul edilir. Bu reklam türlerine ilişkin reklam yaşam döngüsü olaylarını dinlemek için yeni bir FullScreenContentListener
kurulabilir ve AdMob hizmetinin ücretli bir olayın gerçekleştiğini kabul ettiği zamanı izlemek için ayrı bir PaidEventListener
kurulabilir.
RewardedAd
kullanıcıların kazandığı ödül etkinliklerini izlemek için ek bir dinleyiciye sahiptir.
Yeni tam ekran reklam geri çağırma yöntemleri
FullScreenContentListener yöntemleri | PaidEventListener yöntemleri | UserEarnedRewardListener yöntemleri |
---|---|---|
OnAdClicked | OnPaidEvent | OnUserEarnedReward |
OnAdDismissedFullScreenContent | ||
OnAdFailedToShowFullScreenContent | ||
OnAdImpression | ||
OnAdShowedFullScreenContent |
Yöntemler değiştirildi/kaldırıldı/değiştirildi
Aşağıdaki tabloda yeni Google Mobile Ads C++ SDK'sında değiştirilen belirli yöntemler listelenmektedir. Parametreleri listelenen yöntemler kalır ancak imzaları değişmiştir.
Sınıf | Firebase AdMob C++ SDK API'si | Google Mobil Reklamlar C++ SDK API'sı | Notlar |
---|---|---|---|
BannerView | MoveTo | AdView::SetPosition | |
presentation_state | Kaldırıldı | AdViewListener etkinlikleri ve AdView::Show ve AdView::Hide gelecekteki sonuçlar tarafından yönetilir. | |
SetListener | AdView::SetAdListener AdView::SetBoundingBoxListener AdView::SetPaidEventListener | Yeni dinleyici tasarımı, AdView yaşam döngüsü olaylarının tespitinin doğruluğunu artırır. | |
Listener::OnPresentationStateChanged | Kaldırıldı | Yukarıdaki BannerView::SetListener bakın. | |
Listener::OnBoundingBoxChanged | AdViewBoundingBoxListener::OnBoundingBoxChanged | ||
Geçiş reklamı | Initialize(AdParent parent, const char* ad_unit_id) | Initialize(AdParent parent) | ad_unit_id parametresi artık LoadAd işleminin bir parçasıdır. |
LoadAd(const AdRequest& request) | LoadAd(const char* ad_unit_id, const AdRequest& request) | ||
presentation_state | Kaldırıldı | presentation_state numaralandırması kaldırıldı. FullScreenContentListener kullanın. | |
SetListener | SetFullScreenContentListener SetPaidEventListener | ||
Destroy | Kaldırıldı | Kaynakların temizlenmesi artık RewardedAd yıkıcının bir parçası. | |
RewardedAd (resmi olarak RewardedVideoAd ) | Initialize | Initialize(AdParent parent) | AdParent daha önce Show aktarılmıştı ancak artık başlatma işleminin bir parçası. |
presentation_state | Kaldırıldı | presentation_state numaralandırması kaldırıldı. FullScreenContentListener kullanın. | |
SetListener | SetFullScreenContentListener SetPaidEventListener Show | Bir RewardedAd gösterilirken bir UserEarnedReward dinleyicisi de tanımlanır. Aşağıya bakınız. | |
Show(AdParent parent) | Show(UserEarnedRewardListener* listener) |