Join us in person and online for Firebase Summit on October 18, 2022. Learn how Firebase can help you accelerate app development, release your app with confidence, and scale with ease. Register now

C++ プロジェクトで AdMob を使ってみる

コレクションでコンテンツを整理 必要に応じて、コンテンツの保存と分類を行います。

このクイックスタート ガイドは、Firebase で構築されたアプリを収益化するために AdMob を使用するパブリッシャーおよびデベロッパーを対象としています。

AdMob、Firebase、Google アナリティクスを併用するメリットについては、こちらをご覧ください。

このガイドを初めてお読みになる場合は、Google Mobile Ads C++ SDK テストアプリをダウンロードして使用しながら進めることをおすすめします。

始める前に

  • Firebase プロジェクトと Firebase アプリがまだない場合は、Firebase スタートガイドの C++ プロジェクトに Firebase を追加するをご覧ください。

  • Firebase プロジェクトで Google アナリティクスが有効になっていることを確認します。

    • 新しい Firebase プロジェクトを作成する場合は、プロジェクトの作成ワークフロー中に Google アナリティクスを有効にします。

    • Google アナリティクスが有効になっていない既存の Firebase プロジェクトがある場合は、 > [プロジェクトの設定] の [統合] タブで Google アナリティクスを有効にできます。

ステップ 1: AdMob アカウントでアプリを設定する

  1. アプリの各プラットフォーム バリアントを AdMob アプリとして登録します。

    1. AdMob アカウントにログインまたは登録します。

    2. アプリの各プラットフォーム バリアントを AdMob に登録します。この手順では、ガイドの後半で必要になる固有の AdMob アプリ ID を使用して、AdMob アプリを作成します。

    Mobile Ads SDK をアプリに追加するよう求められます。このタスクの詳細な手順については、このガイドの後半をご覧ください。

  2. 各 AdMob アプリを対応する Firebase アプリにリンクします。

    このステップは省略可能ですが、行っていただくことを強くおすすめします。ユーザーに関する指標を有効にし、AdMob アプリを Firebase にリンクするメリットについては、こちらをご確認ください。

    プラットフォーム バリアントごとに、AdMob アカウントの [アプリ] ダッシュボードで次の 2 つのステップを行います。

    1. ユーザーに関する指標を有効にして、AdMob が AdMob アカウントのキュレートされた分析データを処理、表示できるようにします。また、これは AdMob アプリを Firebase にリンクするために必須の設定でもあります。

    2. 既存の Firebase プロジェクトと対応する Firebase アプリに AdMob アプリをリンクします。

      Firebase アプリに入力したものと同じパッケージ名(Android)またはバンドル ID(iOS)を入力してください。Firebase アプリのパッケージ名、バンドル ID は、 > [プロジェクト設定] の [マイアプリ] カードで確認できます。

ステップ 2: AdMob アプリ ID をアプリに追加する

Android

次のように <meta-data> タグを追加して、AdMob アプリ ID をアプリの AndroidManifest.xml ファイルに追加します。

<manifest>
    <application>
        <!-- Sample AdMob App ID: ca-app-pub-3940256099942544~3347511713 -->
        <meta-data
            android:name="com.google.android.gms.ads.APPLICATION_ID"
            android:value="ADMOB_APP_ID"/>
    </application>
</manifest>

iOS

アプリの Info.plist ファイルに、GADApplicationIdentifier キーと AdMob App ID の文字列値を追加します。

この変更は、次のようにプログラムで行うことができます。

<!-- Sample AdMob App ID: ca-app-pub-3940256099942544~1458002511 -->
<key>GADApplicationIdentifier</key>
<string>ADMOB_APP_ID</string>

または、プロパティ リストエディタで編集することもできます。

プロパティ リストエディタ

ステップ 3: Google Mobile Ads SDK を追加する

Google Mobile Ads C++ SDK は firebase::gma 名前空間内に存在しているため、Firebase C++ SDK をダウンロードしてから、任意のディレクトリに解凍します。

Firebase C++ SDK は特定のプラットフォームを必要としませんが、プラットフォーム固有のライブラリ構成が必要です。

Android

  1. プロジェクトの gradle.properties ファイルで、解凍した SDK の場所を指定します。

    systemProp.firebase_cpp_sdk.dir=FULL/PATH/TO/SDK
  2. プロジェクトの 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"
  3. モジュール(アプリレベル)の 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
    }
  4. プロジェクトの 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}")
  5. アプリを同期して、すべての依存関係に必要なバージョンがあることを確認します。

これで設定は完了です。C++ アプリは Google Mobile Ads C++ SDK を使用するように構成されました。

iOS

このセクションの手順は、Google Mobile Ads C++ SDK を iOS プロジェクトに追加する方法の一例です。

  1. 次のコマンドを実行して、CocoaPods バージョン 1 以降を取得します。

    sudo gem install cocoapods --pre
  2. 解凍した SDK から Google Mobile Ads Pod を追加します。

    1. Podfile がない場合は作成します。

      cd YOUR_APP_DIRECTORY
      pod init
    2. Google Mobile Ads C++ SDK の Pod を Podfile に追加します。

      pod 'Google-Mobile-Ads-SDK'
    3. Pod をインストールし、Xcode で .xcworkspace ファイルを開きます。

      pod install
      open YOUR_APP.xcworkspace
    4. 以下のフレームワークを Firebase C++ SDK からプロジェクトに追加します。

      • xcframeworks/firebase.xcframework
      • xcframeworks/firebase_gma.xcframework

これで設定は完了です。C++ アプリは Google Mobile Ads C++ SDK を使用するように構成されました。

ステップ 4: Google Mobile Ads SDK を初期化する

広告を読み込む前に、firebase::gma::Initialize() を呼び出して Mobile Ads SDK を初期化します。

この呼び出しにより、初期化の完了後(または 30 秒のタイムアウト後)に firebase::Future が返されます。このメソッドはできるだけ早く、できればアプリの起動時に呼び出してください。

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 が作成されて返されます。アプリは Futurestatus() をポーリングして、初期化が完了したタイミングを特定できます。初期化が完了すると、アプリは result() を呼び出して結果の AdapterInitializationStatus を取得できます。

Future を返すメソッドには、それぞれ「前回の結果(LastResult)」を取得するメソッドが用意されています。アプリは、このメソッドを使用して特定のアクションの最新の 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.
  }
}

ステップ 5: アプリに実装する広告フォーマットを選択する

AdMob にはさまざまな広告フォーマットが用意されており、アプリのユーザー エクスペリエンスに合わせて最適なフォーマットを選択できます。AdMob のドキュメントで広告フォーマットのボタンをクリックすると、詳しい実装手順が表示されます。

デバイス画面の上部か下部に表示される長方形の広告です。

ユーザーがアプリを操作している間は画面に残り、一定の時間が経過すると自動的に更新されます。モバイル広告を初めて利用する場合、この広告から開始するのが最適です。

バナー広告を実装する

インタースティシャル

ユーザーが閉じるまでアプリのインターフェース上に全画面表示される広告です。

ゲームでレベルが切り替わるときやタスクの完了直後など、アプリの実行フローの合間に使用するのが最適です。

インタースティシャル広告を実装する

リワード

短い動画を視聴し、体験プレイ広告やアンケートを操作したユーザーに特典を進呈する広告です。

リワード(または「リワードベース」)広告は、無料ユーザーの収益化に効果的です。

リワード広告を実装する

その他のトピック

ユーザーに関する指標とアナリティクス データを表示する

Mobile Ads SDK が初期化されると、アプリからのアナリティクス イベントユーザー プロパティのロギングが自動的に開始されます。このデータは、アプリへコードを追加することや広告を実装することなく表示できます。アナリティクス データが確認できる場所は、次のとおりです。

ARPU および ARPPU 指標の精度を高めるには、これらの指標の収益計算に ecommerce_purchase というアナリティクス カスタム イベントのデータを含めることをおすすめします(詳細)。

(省略可)Google アナリティクスと Firebase のその他の機能を使用する

アプリの収益性とユーザー エンゲージメントを向上させるため、より多くの機能を活用します。

  • Google アナリティクス用の Firebase SDK を追加して使用する

  • アプリで他の Firebase プロダクトを使用する

    Google アナリティクス用の Firebase SDK を追加したら、他の Firebase プロダクトを使用してアプリ内の広告を最適化します。

    • Remote Config を使用すると、アプリのアップデートを公開しなくても、アプリの動作と外観を変更できます。費用はかからず、1 日あたりのアクティブ ユーザー数に制限はありません。

    • A/B Testing では、アプリの UI、機能、エンゲージメント キャンペーンに関する変更点をテストすることで、変更を広範囲にロールアウトする前に、主な指標(収益や定着率など)に影響があるかどうかを確認できます。

まずは、AdMob アプリで Google アナリティクスと Firebase を使用するためのガイドをご覧ください。