中介

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

本指南就将中介功能集成到 AdMob 应用提供了一站式指导。

前提条件

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

中介功能新手一枚?请阅读:

选择您的中介广告联盟

Google 中介支持 30 多个第三方广告联盟。要集成中介功能,您需要在以下几个地方做出更改:

  1. 第三方广告联盟的界面 - 注册使用第三方广告联盟,并在其前端创建展示位置。
  2. AdMob 界面 - 更新广告单元的中介设置以添加该广告联盟。此外,我们还建议您为支持广告联盟优化的广告联盟设置这一功能。
  3. 应用代码 - 更新您的应用,以添加该第三方广告联盟的 SDK 和适配器库,后者用于在 Google 和该第三方广告联盟之间建立通信,以便请求和投放广告。

在下面选择某个广告联盟即可开始。

广告联盟 横幅广告 插页式广告 激励视频广告 激励视频广告
(新 API)
原生高级广告 ANO 支持 自动数据
收集支持
开源且已标明版本
AdColony 特定国家/地区
AppLovin 特定国家/地区
Chartboost 特定国家/地区
Facebook 特定国家/地区
Fyber Marketplace 特定国家/地区
i-mobile 特定国家/地区
InMobi 特定国家/地区
ironSource 特定国家/地区
maio 全局
MoPub 特定国家/地区
myTarget 特定国家/地区
Nend 全局
Tapjoy 特定国家/地区
Unity Ads 特定国家/地区
Verizon Media 特定国家/地区
Vungle 特定国家/地区
非开源
AdFalcon 特定国家/地区
Flurry 特定国家/地区
Leadbolt 特定国家/地区
LG U+AD
MobFox 全局
Tencent GDT
Vpon
Zucks 特定国家/地区

开源且已标明版本的适配器

在上表中,如果适配器标有“开源且已标明版本”,则表示该适配器源代码会在 Google 的 GitHub 代码库中开源发布,方便您在需要时自行调试相关问题。

这也意味着,Google 的 Bintray 代码库中会有已标明版本的、针对第三方广告联盟特定版本 SDK 构建的适配器版本。只需对应用的 build.gradle 文件做一行更改,您还可以将这些适配器集成到应用中。有关详情,请点击查阅特定广告联盟的指南。

适配器版本控制

对于已标明版本的适配器,其适配器版本控制策略为 <third-party SDK version>.<adapter patch version>。例如,如果广告联盟发布新的 SDK 版本 1.2.3,那么在针对该新版 SDK 进行测试后,它将向 Bintray 发布新的适配器版本 1.2.3.0

如果需要在第三方 SDK 版本的生命周期之外进行适配器更新,则补丁程序版本号会增加。比如,适配器版本 1.2.3.0 的问题修复将在版本 1.2.3.1 中发布。

广告联盟优化 支持

在为中介配置多个广告联盟时,您必须设置这些广告联盟各自的每千次展示费用,以指定向它们发送请求的顺序。这可能难以管理,因为广告联盟的效果会随着时间的推移而出现变化。

广告联盟优化 (ANO) 功能可自动处理中介链订购流程,能让您从中介链上的所有广告联盟中获得最高的每千次展示费用,从而最大程度提升收入。

上面的中介广告联盟表使用了 广告联盟优化 支持的以下值:

广告联盟优化 支持 具体含义
Country-specific 系统会自动代表您按国家/地区更新有效每千次展示费用值。此为最佳优化类型。
Global 系统会自动代表您更新单一全局有效每千次展示费用值。
None 您必须手动配置该广告联盟的有效每千次展示费用值。

有关如何为该广告联盟配置 广告联盟优化 的详情,请点击查阅特定广告联盟的指南。

自定义事件

如果您未在上面的列表中找到某个广告联盟,则可以使用自定义事件自行编写与相应广告联盟集成的代码。如需详细了解如何创建自定义事件,请参阅自定义事件

检查哪个广告联盟适配器类加载了广告

下面是一些示例代码,这些代码记录了横幅广告的广告联盟类名称:

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 实例,以确保从您的所有中介广告联盟获得一致的体验。

将位置信息传递给中介广告联盟

除非您在广告请求中明确提供位置信息,否则 Google 移动广告 SDK 不会将其转发给中介广告联盟。如需详细了解如何在广告请求中提供位置信息,请参阅定位指南

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

激励广告中介

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

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

原生广告中介

以下是实现原生中介时可以考虑的一些最佳做法。

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