始める

AdMob メディエーションは、AdMob ネットワーク、第三者広告ネットワーク、AdMob キャンペーンなど、複数のソースからアプリに広告を配信できる機能です。AdMob メディエーションを使用すると、複数のネットワークに広告リクエストを送信し、広告の配信に最適なネットワークを見つけて、広告掲載率を最大化して収益を増やすことができます。事例紹介

前提条件

広告フォーマットにメディエーションを統合する前に、その広告フォーマットをアプリに統合する必要があります。

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

入札の場合: Google Mobile Ads SDK 18.3.0 以降。

Mobile Ads SDK を初期化する

クイック スタートガイドでは、Mobile Ads SDK を初期化する方法を説明しています。この初期化呼び出し中に、メディエーション アダプタと入札アダプタも初期化されます。最初の広告リクエストにすべての広告ネットワークが参加できるように、初期化が完了してから広告を読み込むことが重要です。

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

Java

import com.google.android.gms.ads.MobileAds;
import com.google.android.gms.ads.initialization.AdapterStatus;
import com.google.android.gms.ads.initialization.InitializationStatus;
import com.google.android.gms.ads.initialization.OnInitializationCompleteListener;

public class MainActivity extends AppCompatActivity {

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        MobileAds.initialize(this, new OnInitializationCompleteListener() {
            @Override
            public void onInitializationComplete(InitializationStatus initializationStatus) {
                Map<String, AdapterStatus> statusMap = initializationStatus.getAdapterStatusMap();
                for (String adapterClass : statusMap.keySet()) {
                    AdapterStatus status = statusMap.get(adapterClass);
                    Log.d("MyApp", String.format(
                            "Adapter name: %s, Description: %s, Latency: %d",
                            adapterClass, status.getDescription(), status.getLatency()));
                }

                // Start loading ads here...
            }
        });
    }
}

Kotlin

import com.google.android.gms.ads.MobileAds

MobileAds.initialize(this) { initializationStatus ->
  val statusMap =
    initializationStatus.adapterStatusMap
  for (adapterClass in statusMap.keys) {
    val status = statusMap[adapterClass]
    Log.d("MyApp", String.format(
      "Adapter name: %s, Description: %s, Latency: %d",
      adapterClass, status!!.description, status.latency))
  }

  // Start loading ads here...
}

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

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

Java

public void onAdLoaded() {
  Log.d("Banner adapter class name: " + ad.getResponseInfo().getMediationAdapterClassName());
}

Kotlin

override fun onAdLoaded() {
  Log.d("Banner adapter class name:" + ad.responseInfo.mediationAdapterClassName)
}

このメソッドの詳細については、getMediationAdapterClassName() に関する ResponseInfo のドキュメントをご覧ください。

Activity インスタンスで広告オブジェクトを初期化する

新しい広告オブジェクト(AdView など)のコンストラクタでは、Context タイプのオブジェクトを渡す必要があります。この Context は、メディエーションの使用時に他の広告ネットワークに渡されます。広告ネットワークによっては、より制限の厳しい Activity タイプの Context が必要となり、Activity インスタンスなしでは広告を配信できない場合があります。そのため、広告オブジェクトの初期化時に Activity インスタンスを渡すことで、メディエーションされる広告ネットワークで一貫したエクスペリエンスを提供することをおすすめします。

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

ネイティブ広告メディエーション

ネイティブ メディエーションを実装する際に考慮すべきベスト プラクティスは次のとおりです。

ネイティブ広告の表示に関するポリシー
広告ネットワークごとに独自のポリシーがあります。メディエーションを使用する場合も、広告を提供したメディエーション対象ネットワークのポリシーに準拠する必要がある点に留意してください。
loadAds() ではなく loadAd() を使用する
loadAds() メソッドは Google 広告のみを配信します。メディエーション向け広告の場合は、代わりに loadAd() を使用してください。

米国のプライバシー関連州法と GDPR

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

詳しくは、制限付きデータ処理(RDP)の有効化と、Google User Messaging Platform(UMP)SDK による GDPR 同意の取得をご覧ください。