Firebase C++ SDK v9.1.0 リリースでは、新しい Google Mobile Ads C++ SDK が導入されています。
Google Mobile Ads C++ SDK は新しい API サーフェスです。2021 年と 2022 年に iOS および Android 向け Firebase AdMob C++ SDK に対して行われた、互換性を破る大きな変更(非推奨の API の削除、全画面広告を使用する際の新しいフローなど)が組み込まれています。
古い Firebase AdMob C++ SDK(firebase::admob
)は非推奨としてマークされており、今後、アップデートやバグの修正は提供されません。
Firebase AdMob C++ SDK が非推奨としてマークされている間は、新しい Google Mobile Ads C++ SDK(firebase::gma
)と古い Firebase AdMob C++ SDK(firebase::admob
)が引き続き Firebase C++ SDK のビルド アーカイブに含まれます。
以前の API の削除
次の API は Google Mobile Ads C++ SDK から完全に削除されました。
RewardedVideoAd
AdMob の RewardedVideoAd
名前空間は RewardedAd
クラスに置き換えられました。RewardedAd
は InterstitialAd
と同じように動作しますが、アイテムの報酬に関する通知を受け取るための追加の RewardedAdListener
が含まれます。
NativeExpressAds
AdMob の NativeExpressAd
は、それぞれの 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 とともに非推奨となりました。
ディレクトリ構造
ヘッダー ファイルをビルド アーカイブ内の新しいディレクトリに移動しました。
非推奨の Firebase AdMob C++ SDK | 新しい Google Mobile Ads C++ SDK |
---|---|
include/firebase/admob |
include/firebase/gma |
ライブラリ
Firebase AdMob C++ SDK は、Firebase C++ SDK ビルド アーカイブ内で静的ライブラリとして提供されます。
iOS
非推奨の Firebase AdMob C++ SDK | 新しい Google Mobile Ads C++ SDK |
---|---|
firebase_admob.xcframework |
firebase_gma.xcframework |
Android
非推奨の Firebase AdMob C++ SDK | 新しい Google Mobile Ads C++ SDK |
---|---|
libfirebase_admob.a |
libfirebase_gma.a |
クラス、列挙型、構造体の移行
変更または削除されたクラス、列挙型、構造体について詳しくは、以下の表をご覧ください。概要を次に示します。
BannerView
の名前をAdView
に変更しました。NativeAdExpressView
を削除しました。RewardedVideo
名前空間をRewardedAd
クラスに置き換えました。PresentationState
列挙型とリスナーを削除し、AdListener
リスナーとFullScreenContent
リスナーに置き換えました。広告ごとの構成パラメータである以下のパラメータを
AdRequests
から削除しました。- テストデバイス ID の構成
- 年齢に基づく広告のターゲティング
代わりに、後続のすべての広告掲載数に影響するグローバル設定である
RequestConfiguration
で、これらのパラメータを設定できるようになりました。
非推奨の firebase::admob namespace |
新しい firebase::gma namespace |
---|---|
AdSizeType (列挙型) |
AdSize::Type (列挙型) |
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 (列挙型) |
AdErrorCode (列挙型) |
RewardItem |
AdReward |
SDK の初期化
Google Mobile Ads C++ SDK の各初期化関数は、直ちに次の 2 つのステータス インジケーターを返します。
オプションの out パラメータは、初期化プロセスの開始前に依存関係エラーが発生したかどうかを示します。
return パラメータは
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.
}
AdView
内の AdSize
の変更点
一般的なバナー広告サイズの静的メンバーが AdSize
に含まれるようになりました。これにより、指定した幅と画面の現在の向きに基づいて高さが動的に設定される AnchorAdaptive
および InlineAdaptive
の広告サイズがサポートされます。
静的な AdSize 定数を firebase::gma::AdSize に追加しました |
|
---|---|
AdSize::kBanner |
Mobile Marketing Association(MMA)バナー広告サイズ(320x50 密度非依存ピクセル) |
AdSize::kFullBanner |
Interactive Advertising Bureau(IAB)フルバナー広告サイズ(468x60 密度非依存ピクセル) |
AdSize::kLargeBanner |
縦長バージョンの kBanner (通常 320×100) |
AdSize::kLeaderboard |
Interactive Advertising Bureau(IAB)リーダーボード広告サイズ(728x90 密度非依存ピクセル) |
AdSize::kMediumRectangle |
Interactive Advertising Bureau(IAB)レクタングル(中)広告サイズ(300x250 密度非依存ピクセル) |
AdSize のインスタンス作成に役立つ firebase::gma::AdSize の静的メソッド |
|
---|---|
GetLandscapeAnchoredAdaptiveBannerAdSize |
指定した幅と Google によって最適化された高さで AdSize を作成し、横向きでバナー広告を作成します。 |
GetPortraitAnchoredAdaptiveBannerAdSize |
指定した幅と Google によって最適化された高さで AdSize を作成し、縦向きでバナー広告を作成します。 |
GetCurrentOrientationAnchoredAdaptiveBannerAdSize |
指定した幅と Google によって最適化された高さで AdSize を作成し、現在の画面の向きでバナー広告を作成します |
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
とグローバル構成
テストデバイス ID、TagForChildDirectedTreatment
、TagForUnderAgeOfConsent
(以前は誕生日で処理)が AdRequest
から削除され、グローバル RequestConfiguration
の一部になりました。アプリケーションは、アプリケーションのライフサイクルの早い段階で firebase::gma::SetRequestConfiguration()
を呼び出して、これらの値を構成できます。一度構成された値の設定は、その後のすべての広告読み込みオペレーションで使用されます。
firebase::gma::AdRequest
は、キーワードやオプションのコンテンツ URL など、広告を読み込むためのコンテキスト情報を提供するため、そのまま残ります。
AdMob の AdRequest
C 型構造体は、各種情報のリストを定義して追加する際のユーザー エクスペリエンスを改善するメソッドを持つクラスに置き換えられました。
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
は、AdView
、InterstitialAd
、RewardedAd
のすべての広告タイプについて、AdResult
オブジェクトを含む Future
を返すようになりました。AdResult::is_successful
メソッドは、広告リクエストが正常に実行された場合は true
を返し、そうでない場合は false
を返します。
障害が発生すると、エラーコード、エラー メッセージ、ドメイン文字列など、問題に関するサービスレベル情報を持つ AdError
オブジェクトが AdResult
に含まれます。
旧
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.
}
}
}
}
AdView
内の AdListener
イベント
AdMob の BannerView::Listener
クラスを Google Mobile Ads C++ SDK の 2 つのリスナークラスに置き換えました。
AdListener
は、広告ライフサイクルとユーザー インタラクション イベントを追跡します。AdView
がサイズ変更または移動されると、AdViewBoundingBoxListener
が呼び出されます。
AdMob OnPresentationStateChanged
コールバックの Google Mobile Ads マッピング
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() が呼び出された後で境界ボックスをクエリして、表示される広告のサイズと位置を決定します。
または、AdView の位置と AdSize をクエリするか、AdViewBoundingBoxListener を使用して境界ボックスをモニタリングします。 |
kPresentationStateCoveringUI |
上記の kPresentationStateOpenedPartialOverlay をご覧ください。 |
RewardedAd
がクラスになりました
非推奨の Firebase AdMob C++ SDK では、firebase::admob::rewarded_ad
名前空間内の関数のコレクションを通じてリワード広告を簡単に利用できました。これらの関数は、InterstitialAd
と類似する API サーフェスを使って広告を配信する新しい RewardedAd
クラスに統合されました(次のセクションをご覧ください)。
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
|
||
InterstitialAd | 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 デストラクタに統合されました。 |
|
RewardedAd (正式な RewardedVideoAd )
|
Initialize
|
Initialize(AdParent parent)
|
以前は Show に渡されていた AdParent が初期化に組み込まれました。 |
presentation_state
|
削除済み | presentation_state 列挙型が削除されました。FullScreenContentListener を使用してください。
|
|
SetListener
|
SetFullScreenContentListener SetPaidEventListener
Show
|
UserEarnedReward リスナーは、RewardedAd を表示するときにも定義されます。以下をご覧ください。
|
|
Show(AdParent parent)
|
Show(UserEarnedRewardListener* listener)
|