スタートガイド

このガイドは、AdMob で C++ アプリを収益化することをご希望のパブリッシャー様のうち、Firebase を使用されていない方を対象としています。Firebase をアプリに含める予定がある場合(または検討中の場合)は、このガイドの Firebase を使った AdMob をご覧ください。

広告を表示して収益を得るための第一歩は、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++ テストアプリをダウンロードして使用しながら進めることをおすすめします。

Prerequisites

Android

  • Android Studio 3.2 以降を使用していること
  • アプリのビルドファイルで次の値が使用されていることを確認します。
    • 16 以上の minSdkVersion
    • 28 以上の compileSdkVersion

iOS

  • Xcode 13 以降を使用してください
  • iOS 10.0 以降をターゲットとしていること

AdMob アカウントでアプリを設定する

次の手順に沿って、アプリを AdMob アプリとして登録します。

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

  2. AdMob にアプリを登録します。この手順では、ガイドの後半で必要になる固有の AdMob アプリ ID を使用して、AdMob アプリを作成します。

Google Mobile Ads C++ 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++ アプリは、他の Firebase サービスなしで 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++ アプリは、他の Firebase サービスなしで Google Mobile Ads C++ SDK を使用するように構成されます。

アプリの AdMob アプリ ID を設定する

Android

Mobile Ads SDK Android ガイドの手順に沿ってアプリを設定するステップ 3 を行い、この C++ スタートガイドのページに戻ります。

iOS

Mobile Ads SDK iOS ガイドの手順に沿って Info.plist を更新した後、こちらの C++ スタートガイドのページに戻ります。

Google Mobile Ads SDK を初期化する

広告を読み込む前に、アプリで firebase::gma::Initialize() を呼び出して Google Mobile Ads C++ SDK を初期化します。初期化が完了すると(または 30 秒のタイムアウト後に)、firebase::Future が完了します。この処理は 1 回だけ行います(アプリの起動時に行うのが理想的です)。

広告は、Initialize() の呼び出し時に Google Mobile Ads C++ SDK またはメディエーション パートナーの SDK によってプリロードされる可能性があります。欧州経済領域(EEA)内のユーザーから同意を得る必要がある場合は、リクエスト固有のフラグ(tag_for_child_directed_treatmenttag_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 が作成されて返されます。アプリは 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.
  }
}

広告フォーマットを選択する

これで Google Mobile Ads C++ SDK がインポートされ、広告を実装する準備が整いました。AdMob にはさまざまな広告フォーマットが用意されているため、アプリのユーザー エクスペリエンスに最適なものを選択できます。

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

バナー広告を実装する

インタースティシャル

ユーザーが閉じるまで、アプリのインターフェースを覆うようにフルスクリーンで表示される広告。 ゲームのレベルが切り替わる合間やタスクが完了した直後など、アプリの実行の流れが自然に一時停止するタイミングでの使用に適しています。

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

特典

短い動画を視聴し、体験プレイ広告やアンケートを操作したユーザーに特典を提供する広告です。基本プレイ無料アプリを収益化するために使用します。

リワード広告を実装する