开始

通过 AdMob 中介功能,您可以在您的应用中投放多个来源(包括 AdMob 广告联盟、第三方广告联盟和 AdMob 广告系列)的广告。AdMob 中介会将广告请求发送至多个广告联盟,以确保您找到最合适的广告联盟来投放广告,这有助于最大限度提高您的填充率,增加您的收入。案例研究

前提条件

在为广告格式集成中介功能之前,您需要将相应广告格式集成到自己的应用中:

中介功能新手一枚?阅读 AdMob 中介概览

对于出价:Google 移动广告 SDK 18.3.0 或更高版本。

初始化移动广告 SDK

本快速入门指南介绍了如何初始化移动广告 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 会传递到其他广告联盟。某些广告联盟需要更严格的 Context(类型为 Activity),如果没有 Activity 实例,可能无法投放广告。因此,我们建议您在初始化广告对象时传入 Activity 实例,以确保从您的所有中介广告联盟获得一致的体验。

对于中介中使用的横幅广告单元,请确保在所有第三方广告联盟界面中停用刷新功能。 AdMob 这可防止重复刷新,因为 AdMob 还会根据横幅广告单元的刷新频率触发刷新。

激励广告中介

我们建议您通过在 AdMob 界面中设置奖励值来替换所有默认的奖励值。为此,请选中 应用于中介组中的所有广告联盟 复选框,以确保奖励在所有广告联盟之间保持一致。有些广告联盟根本不提供奖励价值或类型。通过替换奖励值,无论哪个广告联盟投放广告,奖励均保持一致。

如需详细了解如何在 AdMob 界面中设置奖励值,请参阅创建激励广告单元

原生广告中介

以下是实现原生中介时需要考虑的一些最佳实践。

原生广告展示政策
每个广告网络都有自己的政策。使用中介时,请务必注意,您的应用仍需遵守提供广告的中介广告联盟的政策。
使用 loadAd(),而不要使用 loadAds()
loadAds() 方法目前仅投放 Google 广告。对于参与中介的广告,请改用 loadAd()

CCPA 和 GDPR

如果您需要遵守《加州消费者隐私法案》(CCPA)《一般数据保护条例》(GDPR),请按照 CCPA 设置GDPR 设置中的步骤将您的中介合作伙伴添加到 AdMob “隐私权和消息”的 CCPA 或 GDPR 广告合作伙伴名单中。否则,可能会导致合作伙伴无法在您的应用中投放广告。

不妨详细了解如何启用 CCPA“受限的数据处理”以及通过 Google User Messaging Platform (UMP) SDK 征得 GDPR 用户同意