このガイドは、Firebase を使用せずに AdMob で C++ アプリを収益化することをご希望のパブリッシャー様を対象としています。アプリに Firebase を組み込みたい場合や、 詳しくは このバージョンの Firebase バージョン ガイドをご覧ください。
Google Mobile Ads C++ SDK のアプリへの統合は、 広告を表示して収益を得ることができます。SDK を統合したら、インタースティシャル広告やリワード広告などの広告フォーマットを選択し、手順に沿って実装してください。
Google Mobile Ads C++ SDK は、Google Mobile Ads iOS SDK と Android SDK をラップしており、これらのプラットフォームでのみ使用できます。Google Mobile Ads C++ SDK は Firebase C++ コンストラクトを使用して非同期オペレーションをサポートしているため、firebase::gma
名前空間に存在します。
このガイドを初めてお読みになる場合は、Google Mobile Ads C++ テストアプリをダウンロードして使用しながら進めることをおすすめします。
前提条件
Android
- Android Studio 3.2 以降を使用している
- アプリのビルドファイルで次の値が使用されていることを確認します。
- 16 以上の
minSdkVersion
- 28 以上の
compileSdkVersion
- 16 以上の
iOS
- Xcode 13 以降を使用している
- iOS 10.0 以降を対象とする
AdMob アカウントでアプリを設定する
アプリを AdMob アプリとして登録する手順は次のとおりです。
AdMob にアプリを登録します。この手順では、ガイドの後半で必要になる固有の AdMob アプリ ID を使用して、AdMob アプリを作成します。
Google Mobile Ads C++ SDK をインストールする
Google Mobile Ads C++ SDK は firebase::gma
名前空間にあるため、
Firebase C++ SDK をダウンロードします。
任意のディレクトリに解凍します。
Firebase C++ SDK はプラットフォーム固有ではありませんが、 プラットフォーム固有のライブラリ構成を使用します。
Android
CMake の使用をおすすめしますが、ndk-build の手順については、
一般的な Firebase C++ SDK のスタートガイド
ガイド
libfirebase_app.a
と libfirebase_gma.a
をアプリにリンクします。
プロジェクトの
gradle.properties
ファイルで、解凍した SDK の場所を指定します。systemProp.firebase_cpp_sdk.dir=FULL_PATH_TO_SDK
プロジェクトの
settings.gradle
ファイルに、以下の内容を追加します。def firebase_cpp_sdk_dir = System.getProperty('firebase_cpp_sdk.dir') gradle.ext.firebase_cpp_sdk_dir = "$firebase_cpp_sdk_dir" includeBuild "$firebase_cpp_sdk_dir"
モジュール(アプリレベル)の Gradle ファイル(通常は
app/build.gradle
- 次の内容を追加します。 Google Mobile Ads C++ SDK のライブラリ依存関係です。android.defaultConfig.externalNativeBuild.cmake { arguments "-DFIREBASE_CPP_SDK_DIR=$gradle.firebase_cpp_sdk_dir" } # Add the dependency for the Google Mobile Ads C++ SDK apply from: "$gradle.firebase_cpp_sdk_dir/Android/firebase_dependencies.gradle" firebaseCpp.dependencies { gma }
プロジェクトの
CMakeLists.txt
ファイルに、以下の内容を追加します。# Add Firebase libraries to the target using the function from the SDK. add_subdirectory(${FIREBASE_CPP_SDK_DIR} bin/ EXCLUDE_FROM_ALL) # Add the Google Mobile Ads C++ SDK. # The Firebase C++ library `firebase_app` is required, # and it must always be listed last. set(firebase_libs firebase_gma firebase_app ) target_link_libraries(${target_name} "${firebase_libs}")
アプリを同期して、すべての依存関係に必要なバージョンがあることを確認します。
iOS
このセクションの手順は、Google Mobile Ads C++ SDK を iOS プロジェクトに追加する方法の一例です。
次のコマンドを実行して、CocoaPods バージョン 1 以降を取得します。
sudo gem install cocoapods --pre
解凍した SDK から Google Mobile Ads Pod を追加します。
Podfile がない場合は作成します。
cd APP_DIRECTORY
pod init
Podfile に、Google Mobile Ads C++ SDK の連続配信広告、 Google User Messaging Platform SDK と最小限の Firebase コア SDK (GMA C++ SDK で必須):
pod 'Firebase/CoreOnly' pod 'Google-Mobile-Ads-SDK' pod 'GoogleUserMessagingPlatform'
Pod をインストールし、Xcode で
.xcworkspace
ファイルを開きます。pod install
open APP.xcworkspace
Firebase C++ SDK の次のフレームワークをプロジェクトに追加します。
xcframeworks/firebase.xcframework
xcframeworks/firebase_gma.xcframework
方は、C++ アプリは、他の Firebase サービスなしで Google Mobile Ads C++ SDK を使用するように構成されています。
アプリの AdMob アプリ ID を設定する
Android
Mobile Ads SDK Android ガイドのアプリを構成するのステップ 3 に沿って設定したら、このページに戻ります。
iOS
Mobile Ads SDK iOS ガイドの説明に沿って Info.plist を更新する手順を行い、このページに戻ります。
Google Mobile Ads SDK を初期化する
広告を読み込む前に、firebase::gma::Initialize()
を呼び出して、アプリで Google Mobile Ads C++ SDK を初期化します。これにより、SDK が初期化され、初期化の完了後(または 30 秒のタイムアウト後)に firebase::Future
が完了します。この処理は 1 回だけ行います(アプリの起動時に行うのが理想的です)。
Initialize()
を呼び出すと、Google Mobile Ads C++ SDK またはメディエーション パートナーの SDK によって広告が事前に読み込まれる場合があります。欧州経済領域(EEA)内のユーザーから同意を得る必要がある場合は、リクエストに適したフラグ(tag_for_child_directed_treatment
や tag_for_under_age_of_consent
など)を設定するか、広告が読み込まれる前になんらかの対応策を取ってください。その後、Google Mobile Ads C++ SDK を初期化する前に firebase::gma::SetRequestConfiguration()
を呼び出して行ってください。詳しくは、ターゲティング ガイドをご覧ください。
Initialize()
を呼び出す方法の例を次に示します。
Android
// Initialize the Google Mobile Ads library
firebase::InitResult result;
Future<AdapterInitializationStatus> future =
firebase::gma::Initialize(jni_env, j_activity, &result);
if (result != kInitResultSuccess) {
// Initialization immediately failed, most likely due to a missing
// dependency. Check the device logs for more information.
return;
}
// Monitor the status of the future.
// See "Use a Future to monitor the completion status of a method call" below.
if (future.status() == firebase::kFutureStatusComplete &&
future.error() == firebase::gma::kAdErrorCodeNone) {
// Initialization completed.
} else {
// Initialization on-going, or an error has occurred.
}
iOS
// Initialize the Google Mobile Ads library.
firebase::InitResult result;
Future<AdapterInitializationStatus> future =
firebase::gma::Initialize(&result);
if (result != kInitResultSuccess) {
// Initialization immediately failed, most likely due to a missing
// dependency. Check the device logs for more information.
return;
}
// Monitor the status of the future.
// See "Use a Future to monitor the completion status of a method call" below.
if (future.status() == firebase::kFutureStatusComplete &&
future.error() == firebase::gma::kAdErrorCodeNone) {
// Initialization completed.
} else {
// Initialization on-going, or an error has occurred.
}
Future
を使用してメソッド呼び出しの完了ステータスをモニタリングする
Future
は、完了したタスクの完了ステータスを判断するための
非同期メソッド呼び出しです
たとえば、アプリが firebase::gma::Initialize()
を呼び出すと、新しい
firebase::Future
が作成されて返されます。その後、アプリはリクエストを
初期化が完了したかどうかを判別するための Future
の status()
。
完了すると、アプリは result()
を呼び出して、結果を取得できます。
AdapterInitializationStatus
。
Future
を返すメソッドには、対応する「前回の結果」があります。メソッドを
アプリは、特定のアクションに対して最新の Future
を取得できます。たとえば、firebase::gma::Initialize()
には firebase::gma::InitializeLastResult()
と呼ばれる対応するメソッドがあります。アプリは、このメソッドで返される Future
を使用して、firebase::gma::Initialize()
への前回の呼び出しのステータスを確認できます。
Future
のステータスが完了で、エラーコードが firebase::gma::kAdErrorCodeNone
の場合、オペレーションは正常に完了しています。
Future
が完了したときに呼び出すコールバックを登録することもできます。コールバックが別のスレッドで実行される場合もあるため、コードがスレッドセーフであることを確認してください。次のコード スニペットでは、コールバックに関数ポインタを使用しています。
// Registers the OnCompletion callback. user_data is a pointer that is passed verbatim
// to the callback as a void*. This allows you to pass any custom data to the callback
// handler. In this case, the app has no data, so you must pass nullptr.
firebase::gma::InitializeLastResult().OnCompletion(OnCompletionCallback,
/*user_data=*/nullptr);
// The OnCompletion callback function.
static void OnCompletionCallback(
const firebase::Future<AdapterInitializationStatus>& future, void* user_data) {
// Called when the Future is completed for the last call to firebase::gma::Initialize().
// If the error code is firebase::gma::kAdErrorCodeNone,
// then the SDK has been successfully initialized.
if (future.error() == firebase::gma::kAdErrorCodeNone) {
// success!
} else {
// failure.
}
}
広告フォーマットを選択します
これで Google Mobile Ads C++ SDK がインポートされ、 表示されます。AdMob にはさまざまな広告フォーマットが用意されており、その中から適切なものを選択できます アプリのユーザー エクスペリエンスに最適なアプリを選択できます。
バナー
デバイス画面の上部または下部に表示される長方形の広告です。 アプリの操作中は画面に表示され続けますが、一定時間が経過すると自動的に更新されるよう設定できます。モバイル初心者の場合 その出発点として最適です
インタースティシャル
ユーザーが閉じるまでアプリのインターフェース上に全画面表示される広告です。アプリの実行フローが自然に一時停止するタイミングで使用することをおすすめします。 ゲームのレベルクリア後や、タスクが完了した直後に行います。
特典
ユーザーが短い動画を視聴し、体験プレイ広告やアンケートを操作した際に報酬を進呈する広告です。無料アプリの収益化に使用されます。