Firebase C++ SDK'sı 9.1.0 sürümü, yeni bir Google Mobile Ads C++ SDK'sı kullanıma sundu.
Google Mobile Ads C++ SDK'sı, 2021 ve 2022'de iOS ve Android için Firebase AdMob C++ SDK'larında yapılan önemli değişiklikleri (desteği sonlandırılan API'lerin kaldırılması ve tam ekran reklam türleriyle çalışırken yeni bir akış dahil) içeren yeni bir API yüzeyidir.
Eski Firebase AdMob C++ SDK'sı (firebase::admob
), desteği sonlandırılan SDK olarak işaretlendi ve bundan sonra güncelleme veya hata düzeltmesi almayacak.
Hem yeni Google Mobile Ads C++ SDK'sı (firebase::gma
) hem de eski Firebase AdMob C++ SDK'sı (firebase::admob
), Firebase AdMob C++ SDK'sının desteğinin sonlandırıldığı süre boyunca Firebase C++ SDK'sının derleme arşivlerinin bir parçası olarak kalacak.
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ülleri hakkında bildirim almak için ek bir RewardedAdListener
içerir.
NativeExpressAds
AdMob'un NativeExpressAd
, her Firebase AdMob C++ SDK'sında desteği sonlandı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 oldu:
Ad alanı firebase::gma
Yeni Google Mobile Ads C++ SDK'sının kaynakları firebase::gma
namespace'indedir. 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ş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 bir 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şen veya kaldırılan belirli sınıflar, enum'lar ve yapılar listelenmiştir. Aşağıda bu sürecin bir özeti verilmiştir:
BannerView
,AdView
olarak yeniden adlandırıldı.NativeAdExpressView
kaldırıldı.RewardedVideo
ad alanı,RewardedAd
sınıfıyla değiştirilir.PresentationState
numaralandırması ve işleyicileri kaldırılır veAdListener
ileFullScreenContent
işleyicileriyle değiştirilir.Aşağıdaki parametreler,
AdRequests
'te reklam başına yapılandırma parametreleri olarak kaldırılır:- test cihazı kimliklerinin yapılandırması
- Reklamların yaşa göre hedeflenmesini
Bunun yerine bu parametreler artık
RequestConfiguration
'te yapılandırılabilir.RequestConfiguration
, sonraki tüm reklam yüklemelerini etkileyecek genel bir ayardır.
firebase::admob namespace özelliği 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 (enum) |
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'yı başlatma
Her Google Mobile Ads C++ SDK ilk kullanıma hazırlama işlevi hemen 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ı olup olmadığını belirtir.
Dönüş parametresi, bir
firebase::Future
referansı olur.Future
, cihazdaki uyumlulaştırma bağdaştırıcıların eşzamansız olarak başlatılmasının sonuçlarını içerir.
Google Mobile Ads C++ SDK'sı, ilklendirme işlevi döndürüldüğü anda AdMob tarafından sunulan reklamları yüklemek için çağrılabilir ancak diğer reklam ağları, ilgili uyumlulaştırma bağdaştırıcısı tamamen başlatılana kadar reklam yayınlamaz. Bu işlem eşzamansız olarak gerçekleşir. Bu nedenle, uygulamanızda reklam uyumlulaştırması kullanıyorsanız reklam yüklemeye başlamadan önce Future
değerinin çö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çindeki AdSize
metriğindeki değişiklikler
AdSize
artık yaygın banner reklam boyutlarının statik üyelerini içeriyor ve belirtilen genişliğe ve ekranın mevcut yönüne göre dinamik yüksekliğe sahip AnchorAdaptive
ve InlineAdaptive
reklam boyutlarını destekliyor.
firebase::gma::AdSize alanına statik AdSize sabitleri eklendi |
|
---|---|
AdSize::kBanner |
Mobil Pazarlama Derneği (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 piksel) |
AdSize::kLargeBanner |
kBanner 'ün daha uzun sürümü (genellikle 320x100) |
AdSize::kLeaderboard |
Interactive Advertising Bureau (IAB) leaderboard reklam boyutu (728x90 yoğunluktan bağımsız piksel) |
AdSize::kMediumRectangle |
Interactive Advertising Bureau (IAB) orta boy dikdörtgen reklam boyutu (300x250 yoğunluktan bağımsız piksel) |
AdSize örneklerini oluşturmaya yardımcı olmak için firebase::gma::AdSize sınıfındaki statik yöntemler |
|
---|---|
GetLandscapeAnchoredAdaptiveBannerAdSize |
Yatay modda banner reklam oluşturmak için belirli bir genişliğe ve Google tarafından optimize edilmiş bir yüksekliğe sahip bir AdSize oluşturur |
GetPortraitAnchoredAdaptiveBannerAdSize |
Dikey modda banner reklam oluşturmak için belirli bir genişliğe ve Google tarafından optimize edilmiş bir yüksekliğe sahip bir AdSize oluşturur |
GetCurrentOrientationAnchoredAdaptiveBannerAdSize |
Mevcut yönü dikkate alarak banner reklam oluşturmak için belirli bir genişliğe ve Google tarafından optimize edilmiş bir yüksekliğe sahip bir AdSize oluşturur |
GetInlineAdaptiveBannerAdSize |
Maksimum yükseklik verildiğinde banner reklamlar için en uygun AdSize 'ü oluşturur
Bu |
GetLandscapeInlineAdaptiveBannerAdSize |
Belirtilen genişlik ve cihazın yatay yüksekliğiyle bir InlineAdaptive AdSize oluşturur |
GetPortraitInlineAdaptiveBannerAdSize |
Belirtilen genişlik ve cihazın dikey yüksekliğiyle bir InlineAdaptive AdSize oluşturur. |
GetCurrentOrientationInlineAdaptiveBannerAdSize |
Belirli bir genişlik verildiğinde geçerli arayüz yönü dikkate alınarak InlineAdaptive
AdSize döndürmek için kullanılan bir kolaylık yöntemidir. |
Ö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
(eskiden doğum günü tarafından yönetiliyordu) AdRequest
'den kaldırıldı ve artık genel bir RequestConfiguration
'ın parçası. Uygulamalar, bu değerleri yapılandırmak için firebase::gma::SetRequestConfiguration()
işlevini uygulamanın yaşam döngüsünün başlarında çağırabilir. Yapılandırılan bu ayarlar, sonraki tüm reklam yükleme işlemlerinde dikkate alınır.
firebase::gma::AdRequest
, anahtar kelimeler ve isteğe bağlı bir içerik URL'si de dahil olmak üzere reklam yüklemeyle ilgili bağlamsal bilgiler sağladığı için 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.
AdRequest
ile ilgili önemli değişiklikler ş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ımlanan 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çerikle eşleşmesini 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 bir 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
değerini, aksi takdirde false
değerini döndürür.
Başarısızlık durumunda AdResult
, hata kodu, hata mesajı ve alan dizeleri dahil olmak üzere sorunla ilgili hizmet düzeyinde bilgiler 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
etkinlik
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ü ve kullanıcı etkileşimi etkinliklerini izler.AdView
yeniden boyutlandırıldığında veya taşındığındaAdViewBoundingBoxListener
çağrılır.
AdMob OnPresentationStateChanged
geri çağırma Google Mobile Ads eşlemeleri
firebase::admob::BannerView::PresentationState
listelenen tür ve OnPresentationStateChanged
dinleyici yöntemi yeni Google Mobile Ads C++ SDK'sına dahil edilmemiştir.
Aşağıda, bir AdView
öğesinin yaşam döngüsünde sunu 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() bir reklamla asenkron 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 sorgulayabilirsiniz.
Alternatif olarak, AdView 'nin konumunu ve AdSize 'ı sorgulayabilir ve/veya AdViewBoundingBoxListener üzerinden sınırlayıcı kutuyu izleyebilirsiniz. |
kPresentationStateCoveringUI |
Yukarıdaki kPresentationStateOpenedPartialOverlay bölümüne bakın |
RewardedAd
artık 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 hizmetinin ücretli bir etkinlik gerçekleştiğini belirlediği durumları izlemek için ayrı bir PaidEventListener
yüklenebilir.
RewardedAd
, kullanıcının kazandığı ö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 |
Değiştirilen/kaldırılan/yerine konan yöntemler
Aşağıdaki tabloda, yeni Google Mobile Ads C++ SDK'sında değiştirilen yöntemler listelenmiştir. Parametreleri listelenen yöntemler değişmeden kalır ancak imzaları değişir.
Sınıf | Firebase AdMob C++ SDK API | 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 yönetilir.
|
|
SetListener
|
AdView::SetAdListener AdView::SetBoundingBoxListener AdView::SetPaidEventListener |
Yeni dinleyici tasarımı, AdView yaşam döngüsü etkinliklerinin algılanma doğruluğunu artırır.
|
|
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ıdır.
|
LoadAd(const AdRequest& request)
|
LoadAd(const char* ad_unit_id, const AdRequest& request)
|
||
presentation_state
|
Kaldırıldı | presentation_state dizini kaldırıldı. FullScreenContentListener kullanın.
|
|
SetListener
|
SetFullScreenContentListener SetPaidEventListener
|
||
Destroy
|
Kaldırıldı | Kaynakların temizlenmesi artık RewardedAd sınıfının yıkıcısına dahil edildi.
|
|
RewardedAd (resmi olarak RewardedVideoAd )
|
Initialize
|
Initialize(AdParent parent)
|
AdParent daha önce Show 'a iletiliyordu ancak artık ilklendirmenin bir parçasıdır.
|
presentation_state
|
Kaldırıldı | presentation_state dizini kaldırıldı. FullScreenContentListener kullanın.
|
|
SetListener
|
SetFullScreenContentListener SetPaidEventListener
Show
|
UserEarnedReward dinleyici, RewardedAd gösterilirken de tanımlanır. Aşağıdaki bilgilere bakın.
|
|
Show(AdParent parent)
|
Show(UserEarnedRewardListener* listener)
|