Firebase C++ SDK'sının 9.1.0 sürümünün yayınlanmasıyla yeni bir Google Mobile Ads C++ SDK'sı kullanıma sunuluyor.
Google Mobile Ads C++ SDK, 2021 ve 2022'de iOS ve Android için Firebase AdMob C++ SDK'larında yapılan ve desteği sonlandırılan API'lerin kaldırılması ile tam ekran reklam türleriyle çalışırken yeni bir akış gibi önemli değişiklikleri içeren yeni bir API yüzeyidir.
Eski Firebase AdMob C++ SDK'sı (firebase::admob) kullanımdan kaldırıldı ve artık güncelleme veya hata düzeltmesi almayacak.
Hem yeni Google Mobil Reklamlar C++ SDK'sı (firebase::gma) hem de eski Firebase AdMob C++ SDK'sı (firebase::admob), Firebase AdMob C++ SDK desteğinin sonlandırılacağı dönemde Firebase C++ SDK'sının derleme arşivlerinde yer almaya devam edecek.
Eski API'lerin 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 ile benzer şekilde çalışı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 kullanımdan kaldırılmış olarak işaretlenmişti. Bu nedenle NativeExpressAd, yeni Google Mobile Ads C++ SDK'sına dahil edilmemiştir.
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'sının kaynakları firebase::gma
ad alanındadır. Eski firebase::admob ad alanı, Firebase AdMob C++ SDK'sı ile birlikte kullanımdan kaldırıldı.
Dizin yapısı
Başlık dosyaları, derleme arşivinin içindeki yeni bir dizine taşındı:
| Kullanımdan kaldırılan Firebase AdMob C++ SDK'sı | Yeni Google Mobile Ads C++ SDK'sı |
|---|---|
include/firebase/admob |
include/firebase/gma |
Kitaplık
Firebase AdMob C++ SDK'sı, Firebase C++ SDK derleme arşivinde statik kitaplık olarak sağlanır:
iOS
| Kullanımdan kaldırılan Firebase AdMob C++ SDK'sı | Yeni Google Mobile Ads C++ SDK'sı |
|---|---|
firebase_admob.xcframework |
firebase_gma.xcframework |
Android
| Kullanımdan kaldırılan Firebase AdMob C++ SDK'sı | Yeni Google Mobile Ads C++ SDK'sı |
|---|---|
libfirebase_admob.a |
libfirebase_gma.a |
Sınıf, enum ve yapı taşıma işlemleri
Aşağıdaki tabloda, değiştirilen veya kaldırılan belirli sınıflar, numaralandırmalar ve yapılar listelenmektedir. Özet:
BannerView,AdViewolarak yeniden adlandırıldı.NativeAdExpressViewkaldırılır.RewardedVideoad alanı,RewardedAdsınıfıyla değiştirilir.PresentationStatenumaralandırması ve işleyicileri kaldırılıpAdListenerveFullScreenContentişleyicileriyle değiştirildi.Aşağıdaki parametreler,
AdRequests'daki reklam başına yapılandırma parametreleri olarak kaldırılır:- Test cihazı kimliklerinin yapılandırılması
- reklamların yaşa göre hedeflenmesi
Bunun yerine, bu parametreler artık
RequestConfigurationbölümünde yapılandırılabilir. Bu bölüm, sonraki tüm reklam yüklemelerini etkileyecek genel bir ayardır.
Kullanımdan kaldırıldı firebase::admob namespace |
Yeni firebase::gma namespace |
|---|---|
AdSizeType (enum) |
AdSize::Type (enum) |
BannerView |
AdView |
BannerView::Listener |
AdListenerAdViewBoundingBoxListenerPaidEventListener |
BannerView::Position |
AdView::Position |
BannerView::PresentationState |
Kaldırıldı |
ChildDirectedTreatmentState |
RequestConfiguration::TagForChildDirectedTreatment |
Gender (enum) |
Kaldırıldı |
InterstitialAd::Listener |
FullScreenContentListenerPaidEventListener |
KeyValuePair |
Kaldırıldı |
NativeExpressAdView |
Kaldırıldı |
PollableRewardListener |
Kaldırıldı |
RewardItem |
AdReward |
RewardedVideoAd (ad alanı) |
RewardedAd (sınıf) |
RewardedVideoAd::Listener |
FullScreenContentListenerPaidEventListenerUserEarnedRewardListener |
AdMobError (enum) |
AdErrorCode (enum) |
RewardItem |
AdReward |
SDK başlatma
Her Google Mobile Ads C++ SDK'sı başlatma işlevi hemen iki durum göstergesi döndürür:
İsteğe bağlı bir out parametresi, başlatma işlemi başlamadan önce bir bağımlılık hatası oluşup oluşmadığını belirtir.
Dönüş parametresi,
firebase::Futureöğesine yapılan 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.
Google Mobile Ads C++ SDK'sı, ilk kullanıma hazırlama işlevi döndürülür döndürülmez AdMob tarafından sunulan reklamları yüklemek için çağrılabilirken diğer reklam ağları, ilgili uyumlulaştırma bağdaştırıcısı tamamen ilk kullanıma hazırlanana kadar reklam yayınlamaz. Bu işlem eşzamansız olarak gerçekleşir. Bu nedenle, uygulamanızda reklam aracılığı kullanıyorsanız herhangi bir reklam yüklemeyi denemeden önce Future sorununun çözülmesini 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;
}
Sonra
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 içinde AdSize ile ilgili değişiklikler
AdSize artık yaygın banner reklam boyutlarının statik üyelerini içeriyor ve AnchorAdaptive ile InlineAdaptive reklam boyutlarını destekliyor. Bu reklam boyutları, verilen genişliğe ve ekranın mevcut yönüne göre dinamik bir yüksekliğe sahip.
AdSize adlı öğe grubuna statik AdSize sabit değerleri eklendifirebase::gma::AdSize |
|
|---|---|
AdSize::kBanner |
Mobile Marketing Association (MMA) banner reklam boyutu (320x50 yoğunluktan bağımsız piksel) |
AdSize::kFullBanner |
Interactive Advertising Bureau (IAB) tam banner reklam boyutu (468x60 yoğunluktan bağımsız pikseller) |
AdSize::kLargeBanner |
kBanner biçiminin daha uzun versiyonu, genellikle 320x100 |
AdSize::kLeaderboard |
Interactive Advertising Bureau (IAB) leaderboard reklam boyutu (728x90 yoğunluktan bağımsız pikseller) |
AdSize::kMediumRectangle |
Interactive Advertising Bureau (IAB) orta boy dikdörtgen reklam boyutu (300x250 yoğunluktan bağımsız piksel) |
firebase::gma::AdSize içinde AdSize örnekleri oluşturmaya yardımcı olan statik yöntemler |
|
|---|---|
GetLandscapeAnchoredAdaptiveBannerAdSize |
Yatay modda banner reklam oluşturmak için belirtilen genişlikte ve Google tarafından optimize edilmiş yükseklikte bir AdSize oluşturur. |
GetPortraitAnchoredAdaptiveBannerAdSize |
Portre modunda banner reklam oluşturmak için belirtilen genişlikte ve Google tarafından optimize edilmiş yükseklikte bir AdSize oluşturur. |
GetCurrentOrientationAnchoredAdaptiveBannerAdSize |
Mevcut yöne göre banner reklam oluşturmak için belirtilen genişliğe ve Google tarafından optimize edilmiş yüksekliğe sahip bir AdSize oluşturur. |
GetInlineAdaptiveBannerAdSize |
Maksimum yüksekliğe göre banner reklamlar için en uygun AdSize oluşturur.
Bu |
GetLandscapeInlineAdaptiveBannerAdSize |
Belirtilen genişlik ve cihazın yatay yüksekliğiyle InlineAdaptive AdSize oluşturur. |
GetPortraitInlineAdaptiveBannerAdSize |
Belirtilen genişlikte ve cihazın dikey yüksekliğinde bir InlineAdaptive AdSize oluşturur. |
GetCurrentOrientationInlineAdaptiveBannerAdSize |
Belirli bir genişlik verildiğinde mevcut arayüz yönü göz önüne alınarak InlineAdaptive
AdSize döndürmek için kullanılan kolaylık yöntemi. |
Ö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);
Sonra
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 tarihiyle işleniyordu) AdRequest'den kaldırıldı ve artık genel bir RequestConfiguration'nin 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() çağırabilir. Bu ayarlar yapılandırıldıktan sonra, sonraki tüm reklam yükleme işlemlerinde geçerli olur.
firebase::gma::AdRequest, anahtar kelimeler ve isteğe bağlı bir içerik URL'si de dahil olmak üzere reklamların yüklenmesi için bağlamsal bilgiler sağladığından hâlâ mevcuttur.
AdMob'un AdRequest C tarzı yapısı, çeşitli bilgi listelerini tanımlarken ve bunlara ekleme yaparken daha iyi bir kullanıcı deneyimi sağlayan yöntemlere sahip bir sınıfla değiştirildi.
Önemli AdRequest değişiklikler:
- Ekstralar artık bir arabuluculuk 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österilen diğer içeriklerle 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.
Sonra
// 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 AdResult nesnesi içeren bir Future döndürüyor. AdResult::is_successful yöntemi, reklam isteği başarıyla karşılandıysa true, karşılanmadıysa false değerini döndürür.
Başarısızlık durumunda AdResult, hata kodu, hata mesajı ve alan dizeleri de dahil olmak üzere sorunla ilgili hizmet düzeyinde 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.
}
}
}
Sonra
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 ayrı dinleyici sınıfıyla değiştirildi:
AdListener, reklam yaşam döngüsü ve kullanıcı etkileşimi etkinliklerini izler.AdViewBoundingBoxListener,AdViewyeniden boyutlandırıldığında veya taşındığında çağrılır.
AdMob OnPresentationStateChanged geri çağırma Google Mobile Ads eşlemeleri
firebase::admob::BannerView::PresentationState numaralandırılmış türü ve OnPresentationStateChanged dinleyici yöntemi, yeni Google Mobile Ads C++ SDK'sında yer almaz.
Aşağıda, AdView yaşam döngüsünde sunum durumu değişikliklerini algılamanın alternatif yolları verilmiştir:
firebase::admob::BannerView::Listener
OnPresentationStateChanged etkinlik |
firebase::gma::AdListener karşı taraf |
|---|---|
kPresentationStateHidden |
AdListener::OnAdClosed çağrıldığında veya AdView::Hide() eşzamansız işlemini başarıyla tamamladığında |
kPresentationStateVisibleWithoutAd |
Yok. Yüklenmemiş bir AdView::Show() AdView'ı çağırmaya çalışmak hataya neden olur. |
kPresentationStateVisibleWithAd |
AdListener::OnAdOpened çağrıldığında veya AdView::Show(), eşzamansız işlemini bir reklamla 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'nın konumunu ve AdSize sorgulayın ve/veya sınırlayıcı kutuyu AdViewBoundingBoxListener üzerinden izleyin. |
kPresentationStateCoveringUI |
Yukarıdaki kPresentationStateOpenedPartialOverlay bölümüne bakın. |
RewardedAd artık bir sınıf
Desteği sonlandırılan Firebase AdMob C++ SDK'sı, firebase::admob::rewarded_ad ad alanındaki bir işlev koleksiyonu aracılığıyla ödüllü reklamları kolaylaştırıyordu. Bu işlevler, InterstitialAd ile benzer bir API yüzeyine sahip reklamlar yayınlayan 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 reklam olarak kabul edilir. Bu reklam türleri için reklam yaşam döngüsü etkinliklerini dinlemek üzere yeni bir FullScreenContentListener yüklenebilir ve AdMob hizmeti, ücretli bir etkinliğin gerçekleştiğini düşündüğünde bunu izlemek için ayrı bir PaidEventListener yüklenebilir.
RewardedAd, kullanıcı tarafından kazanılan ödül etkinliklerini izlemek için ek bir dinleyiciye sahiptir.
Yeni tam ekran reklam geri çağırma yöntemleri
FullScreenContentListener yöntem |
PaidEventListener yöntem |
UserEarnedRewardListener yöntem |
|---|---|---|
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 listelenmiştir. Parametreleri listelenen yöntemler kalır ancak imzaları değişir.
| Sınıf | Firebase AdMob C++ SDK API'si | Google Mobile Ads C++ SDK API'si | Notlar |
|---|---|---|---|
BannerView
|
MoveTo
|
AdView::SetPosition
|
|
presentation_state
|
Kaldırıldı | AdViewListener etkinlikleri ve AdView::Show ile AdView::Hide gelecekteki sonuçları tarafından işlenir.
|
|
SetListener
|
AdView::SetAdListenerAdView::SetBoundingBoxListenerAdView::SetPaidEventListener |
Yeni dinleyici tasarımı, yaşam döngüsü etkinliklerinin algılanma doğruluğunu artırır.AdView
|
|
Listener::OnPresentationStateChanged
|
Kaldırıldı | Yukarıdaki BannerView::SetListener bölümüne bakın.
|
|
Listener::OnBoundingBoxChanged
|
AdViewBoundingBoxListener::OnBoundingBoxChanged
|
||
| InterstitialAd | Initialize(AdParent parent, const char* ad_unit_id)
|
Initialize(AdParent parent)
|
ad_unit_id parametresi artık LoadAd işleminin bir parçası.
|
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
|
SetFullScreenContentListenerSetPaidEventListener
|
||
Destroy
|
Kaldırıldı | Kaynakları temizleme işlemi artık RewardedAd yıkıcısının bir parçası.
|
|
RewardedAd(resmi olarak RewardedVideoAd)
|
Initialize
|
Initialize(AdParent parent)
|
AdParent daha önce Show'ye iletiliyordu 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
|
SetFullScreenContentListenerSetPaidEventListener
Show
|
UserEarnedReward dinleyici, RewardedAd gösterilirken de tanımlanır. Aşağıdaki bilgilere bakın.
|
|
Show(AdParent parent)
|
Show(UserEarnedRewardListener* listener)
|