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

このクイックスタート ガイドは、Firebase で構築されたアプリを 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 を追加して使用する

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

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

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

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

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