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)
}
このメソッドの詳細について詳しくは、ResponseInfo
のドキュメントで getMediationAdapterClassName()
を確認してください。
Activity インスタンスを使用して広告オブジェクトを初期化する
新しい広告オブジェクト(AdView
など)のコンストラクタで、Context
型のオブジェクトを渡す必要があります。この Context
は、メディエーションを使用する際に他の広告ネットワークに渡されます。広告ネットワークによっては、制限がさらに厳しい Activity
の Context
が要求され、Activity
インスタンスがなければ広告を配信できない場合もあります。そのため、メディエーション広告ネットワークでのエクスペリエンスが一貫したものになるよう、広告オブジェクトの初期化時に Activity
インスタンスを渡すことをおすすめします。
AdMob メディエーションとバナー広告を使用する
AdMob メディエーションで使用するバナー広告ユニットについては、すべての第三者広告ソースの管理画面で更新を無効にしてください。これにより、更新の重複を防ぐことができます。AdMob でもバナー広告ユニットの更新頻度に基づいて更新が行われるためです。
AdMob メディエーションでネイティブ広告を使用する
AdMob メディエーションにネイティブ広告を実装する際のおすすめの方法は次のとおりです。
- ネイティブ広告プレゼンテーション ポリシー
- 各広告ネットワークには独自のポリシーがあります。メディエーションを使用する場合は、広告を提供したメディエーション対象ネットワークのポリシーにアプリが準拠している必要があります。
loadAds()
ではなくloadAd()
を使用するloadAds()
メソッドは Google 広告のみを配信します。メディエーション対象の広告の場合は、代わりにloadAd()
を使用してください。
米国のプライバシー関連州法と GDPR
米国のプライバシー関連州法または一般データ保護規則(GDPR)に準拠する必要がある場合は、米国の州の規制の設定またはGDPR の設定の手順に沿って、AdMob の [プライバシーとメッセージ] の米国の州または GDPR の広告パートナーのリストにメディエーション パートナーを追加してください。追加しない場合、アプリに広告が配信されないことがあります。
詳しくは、Google User Messaging Platform(UMP)SDK で制限付きデータ処理(RDP)を有効にして GDPR の同意を得る方法をご覧ください。