始める

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);

        new Thread(
                () ->
                    // Initialize the Google Mobile Ads SDK on a background thread.
                    MobileAds.initialize(
                        this,
                        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...
                        }))
            .start();
    }
}

Kotlin

import com.google.android.gms.ads.MobileAds
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 the Google Mobile Ads SDK on a background thread.
      MobileAds.initialize(this@MainActivity) { 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 は、メディエーションの使用時に他の広告ネットワークに渡されます。一部の広告ネットワークでは、より制限の厳しい Context(タイプ Activity)が要求され、Activity インスタンスがないと広告を配信できない場合があります。そのため、メディエーション広告ネットワークでのエクスペリエンスの一貫性を保つため、広告オブジェクトを初期化するときは Activity インスタンスを渡すことをおすすめします。

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

AdMob メディエーションでネイティブ広告を使用する

ここでは、AdMob メディエーションにネイティブ広告を実装する際のベスト プラクティスをいくつかご紹介します。

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

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

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

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