Mit der Veröffentlichung des Firebase C++ SDK v9.1.0 wird ein neues Google Mobile Ads C++ SDK eingeführt.
Das Google Mobile Ads C++ SDK ist eine neue API-Oberfläche, die die wichtigsten bahnbrechenden Änderungen enthält, die 2021 und 2022 an den Firebase AdMob C++ SDKs für iOS und Android vorgenommen wurden, einschließlich der Entfernung veralteter APIs und eines neuen Ablaufs bei der Arbeit mit Vollbildanzeigen Typen.
Das alte Firebase AdMob C++ SDK ( firebase::admob
) wurde als veraltet markiert und wird in Zukunft keine Updates oder Fehlerbehebungen mehr erhalten.
Sowohl das neue Google Mobile Ads C++ SDK ( firebase::gma
) als auch das alte Firebase AdMob C++ SDK ( firebase::admob
) bleiben während der Einstellungsphase des Firebase AdMob C++ SDK Teil der Build-Archive für das Firebase C++ SDK.
Entfernung der alten API
Die folgenden APIs wurden vollständig aus dem Google Mobile Ads C++ SDK entfernt.
RewardedVideoAd
Der RewardedVideoAd
Namespace von AdMob wurde durch RewardedAd
-Klasse ersetzt. RewardedAd
verhält sich ähnlich wie InterstitialAd
, enthält jedoch einen zusätzlichen RewardedAdListener
, um Benachrichtigungen über Artikelbelohnungen zu erhalten.
NativeExpressAds
NativeExpressAd
von AdMob wurde bereits in jedem Firebase AdMob C++ SDK als veraltet markiert. Daher ist NativeExpressAd
nicht im neuen Google Mobile Ads C++ SDK enthalten.
Änderung des SDK-Namespace
Das SDK wurde in einen neuen Namespace verschoben und verfügt über eine neue Verzeichnisstruktur:
Namespace firebase::gma
Die Quellen des neuen Google Mobile Ads C++ SDK befinden sich im firebase::gma
Namespace. Der ältere Namespace firebase::admob
ist zusammen mit dem Firebase AdMob C++ SDK veraltet.
Verzeichnisaufbau
Header-Dateien wurden in ein neues Verzeichnis im Build-Archiv verschoben:
Veraltetes Firebase AdMob C++ SDK | Neues Google Mobile Ads C++ SDK |
---|---|
include/firebase/admob | include/firebase/gma |
Bibliothek
Das Firebase AdMob C++ SDK wird als statische Bibliothek im Firebase C++ SDK-Build-Archiv bereitgestellt:
iOS
Veraltetes Firebase AdMob C++ SDK | Neues Google Mobile Ads C++ SDK |
---|---|
firebase_admob.xcframework | firebase_gma.xcframework |
Android
Veraltetes Firebase AdMob C++ SDK | Neues Google Mobile Ads C++ SDK |
---|---|
libfirebase_admob.a | libfirebase_gma.a |
Klassen-, Enum- und Strukturmigrationen
In der folgenden Tabelle sind bestimmte Klassen, Aufzählungen und Strukturen aufgeführt, die geändert oder entfernt wurden. Hier ist eine Zusammenfassung:
-
BannerView
wird inAdView
umbenannt. -
NativeAdExpressView
wird entfernt. - Der
RewardedVideo
Namespace wird durch eineRewardedAd
Klasse ersetzt. - Die
PresentationState
Enumeration und die Listener werden entfernt und durchAdListener
undFullScreenContent
Listener ersetzt. Die folgenden Parameter werden als pro-Anzeigen-Konfigurationsparameter in
AdRequests
entfernt:- die Konfiguration von Testgeräte-IDs
- die gezielte Ausrichtung von Werbung auf das Alter
Stattdessen können diese Parameter jetzt in
RequestConfiguration
konfiguriert werden, einer globalen Einstellung, die sich auf alle nachfolgenden Anzeigenladevorgänge auswirkt.
Veralteter firebase::admob namespace | Neuer firebase::gma namespace |
---|---|
AdSizeType (Aufzählung) | AdSize::Type (Aufzählung) |
BannerView | AdView |
BannerView::Listener | AdListener AdViewBoundingBoxListener PaidEventListener |
BannerView::Position | AdView::Position |
BannerView::PresentationState | ENTFERNT |
ChildDirectedTreatmentState | RequestConfiguration::TagForChildDirectedTreatment |
Gender (Aufzählung) | ENTFERNT |
InterstitialAd::Listener | FullScreenContentListener PaidEventListener |
KeyValuePair | ENTFERNT |
NativeExpressAdView | ENTFERNT |
PollableRewardListener | ENTFERNT |
RewardItem | AdReward |
RewardedVideoAd (Namespace) | RewardedAd (Klasse) |
RewardedVideoAd::Listener | FullScreenContentListener PaidEventListener UserEarnedRewardListener |
AdMobError (Aufzählung) | AdErrorCode (Aufzählung) |
RewardItem | AdReward |
SDK-Initialisierung
Jede Initialisierungsfunktion des Google Mobile Ads C++ SDK gibt sofort zwei Statusindikatoren zurück:
Ein optionaler Out-Parameter gibt an, ob vor Beginn des Initialisierungsprozesses ein Abhängigkeitsfehler aufgetreten ist.
Der Rückgabeparameter ist ein Verweis auf einen
firebase::Future
. DieFuture
enthält die Ergebnisse der asynchronen Initialisierung der Vermittlungsadapter auf dem Gerät.
Während das Google Mobile Ads C++ SDK aufgerufen werden kann, um von AdMob bereitgestellte Anzeigen zu laden, sobald die Initialisierungsfunktion zurückkehrt, liefern andere Werbenetzwerke keine Anzeigen, bis ihr entsprechender Meditationsadapter vollständig initialisiert wurde. Dieser Vorgang erfolgt asynchron. Wenn Sie in Ihrer Anwendung die Anzeigenvermittlung verwenden, empfehlen wir daher, dass Sie warten, bis die Future
aufgelöst ist, bevor Sie versuchen, Anzeigen zu laden.
Vor
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;
}
Nach
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.
}
Änderungen an AdSize
in AdView
AdSize
enthält jetzt statische Mitglieder gängiger Banner-Werbegrößen und unterstützt AnchorAdaptive
und InlineAdaptive
-Werbegrößen, die eine dynamische Höhe haben, die auf der gegebenen Breite und der aktuellen Ausrichtung des Bildschirms basiert.
Statische AdSize Konstanten zu firebase::gma::AdSize hinzugefügt | |
---|---|
AdSize::kBanner | Banneranzeigengröße der Mobile Marketing Association (MMA) (320 x 50 dichteunabhängige Pixel) |
AdSize::kFullBanner | Vollständige Banneranzeigengröße des Interactive Advertising Bureau (IAB) (468 x 60 dichteunabhängige Pixel) |
AdSize::kLargeBanner | Größere Version von kBanner , normalerweise 320 x 100 |
AdSize::kLeaderboard | Größe der Leaderboard-Anzeige des Interactive Advertising Bureau (IAB) (728 x 90 dichteunabhängige Pixel) |
AdSize::kMediumRectangle | Mittlere rechteckige Anzeigengröße des Interactive Advertising Bureau (IAB) (300 x 250 dichteunabhängige Pixel) |
Statische Methoden in firebase::gma::AdSize zur Unterstützung bei der Erstellung von AdSize Instanzen | |
---|---|
GetLandscapeAnchoredAdaptiveBannerAdSize | Erstellt eine AdSize mit der angegebenen Breite und einer von Google optimierten Höhe, um eine Bannerwerbung im Querformat zu erstellen |
GetPortraitAnchoredAdaptiveBannerAdSize | Erstellt eine AdSize mit der angegebenen Breite und einer von Google optimierten Höhe, um eine Bannerwerbung im Hochformat zu erstellen |
GetCurrentOrientationAnchoredAdaptiveBannerAdSize | Erstellt eine AdSize mit der angegebenen Breite und einer von Google optimierten Höhe, um eine Bannerwerbung mit der aktuellen Ausrichtung zu erstellen |
GetInlineAdaptiveBannerAdSize | Erstellt eine AdSize die bei gegebener maximaler Höhe am besten für Bannerwerbung geeignet ist Mit dieser |
GetLandscapeInlineAdaptiveBannerAdSize | Erstellt eine InlineAdaptive AdSize mit der angegebenen Breite und der Querformathöhe des Geräts |
GetPortraitInlineAdaptiveBannerAdSize | Erstellt eine InlineAdaptive AdSize mit der angegebenen Breite und der Hochformathöhe des Geräts. |
GetCurrentOrientationInlineAdaptiveBannerAdSize | Eine praktische Methode zum Zurückgeben InlineAdaptive AdSize unter Berücksichtigung der aktuellen Schnittstellenausrichtung und einer bestimmten Breite. |
Vor
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);
Nach
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
und globale Konfiguration
Die Testgeräte-IDs TagForChildDirectedTreatment
und TagForUnderAgeOfConsent
(zuvor nach Geburtstag behandelt) wurden aus AdRequest
entfernt und sind jetzt Teil einer globalen RequestConfiguration
. Anwendungen können firebase::gma::SetRequestConfiguration()
zu einem frühen Zeitpunkt im Lebenszyklus der Anwendung aufrufen, um diese Werte zu konfigurieren. Bei allen nachfolgenden Anzeigenladevorgängen werden diese Einstellungen berücksichtigt, sobald sie konfiguriert sind.
firebase::gma::AdRequest
existiert weiterhin, da es Kontextinformationen zum Laden von Werbung bereitstellt, einschließlich Schlüsselwörtern und einer optionalen Inhalts-URL.
AdRequest
Struktur im C-Stil von AdMob wurde durch eine Klasse mit Methoden ersetzt, die eine bessere Benutzererfahrung beim Definieren und Anhängen an die verschiedenen Informationslisten bieten.
Hier sind bemerkenswerte AdRequest
Änderungen:
- Extras sind jetzt einem Mediationsadapterklassennamen zugeordnet. An den AdMob-Dienst gesendete Extras sollten den unten definierten Standardklassennamen verwenden.
- Beim Anfordern einer Anzeige geben Apps möglicherweise eine URL des von ihnen bereitgestellten Inhalts weiter. Dies ermöglicht das Keyword-Targeting, um die Anzeige mit anderen angezeigten Inhalten abzugleichen.
Vor
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.
Nach
// 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
gibt jetzt einen Future
zurück, der ein AdResult
Objekt für alle Anzeigentypen AdView
, InterstitialAd
und RewardedAd
enthält. Die AdResult::is_successful
Methode gibt true
zurück, wenn die Anzeigenanfrage erfolgreich erfüllt wurde, oder „ false
, wenn nicht.
Bei einem Fehler enthält das AdResult
ein AdError
Objekt mit Service-Level-Informationen zum Problem, einschließlich Fehlercode, Fehlermeldung und Domänenzeichenfolgen.
Vor
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.
}
}
}
Nach
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
Ereignisse in AdView
BannerView::Listener
Klasse von AdMob wurde im Google Mobile Ads C++ SDK durch zwei unterschiedliche Listener-Klassen ersetzt:
-
AdListener
verfolgt den Anzeigenlebenszyklus und Benutzerinteraktionsereignisse. -
AdViewBoundingBoxListener
wird aufgerufen, wenn dieAdView
geändert oder verschoben wird.
AdMob OnPresentationStateChanged
Rückruf Google Mobile Ads-Zuordnungen
Der Aufzählungstyp firebase::admob::BannerView::PresentationState
und die Listener-Methode OnPresentationStateChanged
sind nicht im neuen Google Mobile Ads C++ SDK enthalten.
Im Folgenden finden Sie alternative Möglichkeiten, Änderungen des Präsentationsstatus im Lebenszyklus eines AdView
zu erkennen:
firebase::admob::BannerView::Listener OnPresentationStateChanged Ereignis | firebase::gma::AdListener -Gegenstück |
---|---|
kPresentationStateHidden | Wenn AdListener::OnAdClosed aufgerufen wird oder wenn AdView::Hide() seinen asynchronen Vorgang erfolgreich abschließt |
kPresentationStateVisibleWithoutAd | Keiner. Der Versuch, AdView::Show() in einem entladenen AdView aufzurufen, führt zu einem Fehler. |
kPresentationStateVisibleWithAd | Wenn AdListener::OnAdOpened aufgerufen wird oder wenn AdView::Show() seinen asynchronen Vorgang mit einer Anzeige erfolgreich abschließt |
kPresentationStateOpenedPartialOverlay | Fragen Sie den Begrenzungsrahmen ab, nachdem AdListener::OnAdOpened() aufgerufen wurde, um die Größe und Position der angezeigten Anzeige zu bestimmen. Alternativ können Sie die Position und AdSize von AdView abfragen und/oder den Begrenzungsrahmen über AdViewBoundingBoxListener überwachen. |
kPresentationStateCoveringUI | Siehe kPresentationStateOpenedPartialOverlay oben |
RewardedAd
ist jetzt eine Klasse
Das veraltete Firebase AdMob C++ SDK ermöglichte belohnte Anzeigen über eine Sammlung von Funktionen im firebase::admob::rewarded_ad
Namespace. Diese Funktionen wurden in einer neuen RewardedAd
-Klasse zusammengefasst, die Anzeigen mit einer ähnlichen API-Oberfläche wie InterstitialAd
liefert (siehe nächster Abschnitt).
InterstitialAd
und RewardedAd
Listener
Sowohl Interstitial-Anzeigen als auch belohnte Anzeigen gelten als Vollbildanzeigen. Ein neuer FullScreenContentListener
kann installiert werden, um Werbelebenszyklusereignisse für diese Anzeigentypen zu überwachen, und ein separater PaidEventListener
kann installiert werden, um zu verfolgen, wann der AdMob-Dienst davon ausgegangen ist, dass ein kostenpflichtiges Ereignis eingetreten ist.
RewardedAd
verfügt über einen zusätzlichen Listener zur Überwachung von vom Benutzer verdienten Belohnungsereignissen.
Neue Rückrufmethoden für Vollbildanzeigen
FullScreenContentListener -Methoden | PaidEventListener -Methoden | UserEarnedRewardListener -Methoden |
---|---|---|
OnAdClicked | OnPaidEvent | OnUserEarnedReward |
OnAdDismissedFullScreenContent | ||
OnAdFailedToShowFullScreenContent | ||
OnAdImpression | ||
OnAdShowedFullScreenContent |
Methoden geändert/entfernt/ersetzt
In der folgenden Tabelle sind die spezifischen Methoden aufgeführt, die im neuen Google Mobile Ads C++ SDK geändert wurden. Methoden mit aufgelisteten Parametern bleiben bestehen, ihre Signaturen haben sich jedoch geändert.
Klasse | Firebase AdMob C++ SDK-API | Google Mobile Ads C++ SDK-API | Anmerkungen |
---|---|---|---|
BannerView | MoveTo | AdView::SetPosition | |
presentation_state | ENTFERNT | Wird von AdViewListener Ereignissen und zukünftigen Ergebnissen AdView::Show und AdView::Hide verarbeitet. | |
SetListener | AdView::SetAdListener AdView::SetBoundingBoxListener AdView::SetPaidEventListener | Das neue Listener-Design erhöht die Genauigkeit der Erkennung von AdView Lebenszyklusereignissen. | |
Listener::OnPresentationStateChanged | ENTFERNT | Siehe BannerView::SetListener oben. | |
Listener::OnBoundingBoxChanged | AdViewBoundingBoxListener::OnBoundingBoxChanged | ||
InterstitialAd | Initialize(AdParent parent, const char* ad_unit_id) | Initialize(AdParent parent) | Der Parameter ad_unit_id ist jetzt Teil der LoadAd Operation. |
LoadAd(const AdRequest& request) | LoadAd(const char* ad_unit_id, const AdRequest& request) | ||
presentation_state | ENTFERNT | Die presentation_state Enumeration wurde entfernt. Verwenden Sie FullScreenContentListener . | |
SetListener | SetFullScreenContentListener SetPaidEventListener | ||
Destroy | ENTFERNT | Das Bereinigen von Ressourcen ist jetzt Teil des RewardedAd Destruktors. | |
RewardedAd (formal RewardedVideoAd ) | Initialize | Initialize(AdParent parent) | AdParent wurde zuvor an Show übergeben, ist jetzt jedoch Teil der Initialisierung. |
presentation_state | ENTFERNT | Die presentation_state Enumeration wurde entfernt. Verwenden Sie FullScreenContentListener . | |
SetListener | SetFullScreenContentListener SetPaidEventListener Show | Beim Anzeigen einer RewardedAd wird auch ein UserEarnedReward Listener definiert. Siehe unten. | |
Show(AdParent parent) | Show(UserEarnedRewardListener* listener) |