AdMob メディエーションを設定する

[プラットフォームを選択]: Android(ベータ版) New-selected Android iOS Unity Flutter

AdMob メディエーションは、AdMob ネットワークや第三者広告ソースなど、複数のソースからの広告をアプリに配信できる機能です。AdMob メディエーションが複数のネットワークに広告リクエストを送信し、広告配信に最適なネットワークを特定するため、広告掲載率を最大限に高めて収益の向上を図ることができます。 事例紹介

前提条件

広告フォーマットにメディエーションを統合するには、その広告フォーマットをあらかじめアプリに組み込んでおく必要があります。

メディエーションを初めてご利用の場合は、AdMob メディエーションの概要をご覧ください。

GMA Next-Gen SDK を初期化する

クイック スタートガイドでは、を初期化する方法を説明しますGMA Next-Gen SDK。 この初期化の呼び出し中に、メディエーション アダプタも初期化されます。最初の広告リクエストで各広告ネットワークが完全に参加していることを確認するため、広告を読み込む前に初期化が完了するまで待つことが重要です。

次のサンプルコードは、広告リクエストを行う前に各アダプタの初期化状況を確認する方法を示しています。

Kotlin

import com.google.android.libraries.ads.mobile.sdk.MobileAds
import com.google.android.libraries.ads.mobile.sdk.initialization.InitializationConfig
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch

class MainActivity : AppCompatActivity() {
  override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)

    val backgroundScope = CoroutineScope(Dispatchers.IO)
    backgroundScope.launch {
      // Initialize GMA Next-Gen SDK on a background thread.
      MobileAds.initialize(this@MainActivity, InitializationConfig.Builder("SAMPLE_APP_ID").build()) {
        initializationStatus ->
        for ((adapterName, adapterStatus) in initializationStatus.adapterStatusMap) {
          Log.d(
            "MyApp",
            String.format(
              "Adapter name: %s, Status code: %s, Status string: %s, Latency: %d",
              adapterName,
              adapterStatus.initializationState,
              adapterStatus.description,
              adapterStatus.latency,
            ),
          )
        }
        // Adapter initialization is complete.
      }
      // Other methods on MobileAds can now be called.
    }
  }
}

Java

import com.google.android.libraries.ads.mobile.sdk.MobileAds;
import com.google.android.libraries.ads.mobile.sdk.initialization.AdapterStatus;
import com.google.android.libraries.ads.mobile.sdk.initialization.InitializationConfig;

public class MainActivity extends AppCompatActivity {
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    new Thread(
            () -> {
              // Initialize GMA Next-Gen SDK on a background thread.
              MobileAds.initialize(
                  this,
                  new InitializationConfig.Builder("SAMPLE_APP_ID")
                      .build(),
                  initializationStatus -> {
                    Map<String, AdapterStatus> adapterStatusMap =
                        initializationStatus.getAdapterStatusMap();
                    for (String adapterClass : adapterStatusMap.keySet()) {
                      AdapterStatus adapterStatus = adapterStatusMap.get(adapterClass);
                      Log.d(
                          "MyApp",
                          String.format(
                              "Adapter name: %s, Status code: %s, Status description: %s,"
                                  + " Latency: %d",
                              adapterClass,
                              adapterStatus.getInitializationState(),
                              adapterStatus.getDescription(),
                              adapterStatus.getLatency()));
                    }
                    // Adapter initialization is complete.
                  });
              // Other methods on MobileAds can now be called.
            })
        .start();
  }
}

メディエーション統合で com.google.android.gms モジュールを除外する

メディエーション アダプタは、現在の Google Mobile Ads SDK に引き続き依存します。ただし、GMA Next-Gen SDK には、メディエーション アダプタに必要なすべてのクラスが含まれています。重複するシンボルに関連するコンパイル エラーを回避するには、メディエーション アダプタが依存関係として現在の Google Mobile Ads SDK をプルしないようにする必要があります。

アプリレベルの build.gradle ファイルで、play-services-adsplay-services-ads-lite モジュールの両方をすべての依存関係からグローバルに除外します。

Kotlin

configurations.configureEach {
    exclude(group = "com.google.android.gms", module = "play-services-ads")
    exclude(group = "com.google.android.gms", module = "play-services-ads-lite")
}

Groovy

configurations.configureEach {
    exclude group: "com.google.android.gms", module: "play-services-ads"
    exclude group: "com.google.android.gms", module: "play-services-ads-lite"
}

広告を読み込んだ広告ネットワーク アダプタのクラスを確認する

バナー広告の広告ネットワーク クラス名を記録するサンプルコードを次に示します。

Kotlin

BannerAd.load(
  BannerAdRequest.Builder("AD_UNIT_ID", AdSize.BANNER).build(),
  object : AdLoadCallback<BannerAd> {
    override fun onAdLoaded(ad: BannerAd) {
      Log.d(
        "MyApp", "Adapter class name: " +
          ad.getResponseInfo().mediationAdapterClassName
      )
    }
  }
)

Java

BannerAd.load(
  new BannerAdRequest.Builder("AD_UNIT_ID", AdSize.BANNER).build(),
  new AdLoadCallback<BannerAd>() {
    @Override
    public void onAdLoaded(@NonNull BannerAd ad) {
      Log.d("MyApp",
          "Adapter class name: " + ad.getResponseInfo().getMediationAdapterClassName());
    }
  }
);

AdMob メディエーションで使用するバナー広告ユニットについては、すべての第三者広告のソースの管理画面で更新を無効にしてください。これにより、更新の重複を防ぐことができます。AdMob でもバナー広告ユニットの更新頻度に基づいて更新が行われるためです。

米国のプライバシー関連州法および GDPR

米国のプライバシー関連州法または一般データ保護規則(GDPR)を遵守する必要がある場合は、米国の州の規制の設定または GDPR の設定の手順に沿って、AdMob の [プライバシーとメッセージ] の米国の州または GDPR の広告パートナー リストにメディエーション パートナーを追加します。追加しないと、パートナーがアプリに広告を配信できなくなる可能性があります。

Google User Messaging Platform(UMP)SDK を使用して、制限付きデータ処理 (RDP)を有効にし、GDPR の同意を得る方法について詳しくは、こちらをご覧ください。