设置

本指南适用于希望使用 Google 移动广告中介的发布商。我们将详细介绍如何为您当前的 Android 应用设置中介适配器以及如何设置其他请求参数。

前提条件

将中介适配器添加到项目中

添加广告联盟适配器和 SDK

在确定要从哪些广告联盟投放广告以后,就可以在中介广告联盟页面上为这些广告联盟下载 SDK 和适配器。其中一些 SDK 已包括 Google 移动广告适配器。

在 Android Studio 中,将 JAR 文件添加到项目的 libs 文件夹中。确保您的 build.gradle file 包含以下内容:

compile fileTree(dir: 'libs', include: ['*.jar'])

配置 AndroidManifest.XML

按照您要使用的每个广告联盟的要求向 AndroidManifest.xml 中添加条目。您可在中介广告联盟页面上找到针对各个广告联盟的说明。请按照相应说明修改 AndroidManifest.xml 文件。

您的应用无需调用任何广告联盟,Google 移动广告 SDK 将会调用第三方广告联盟适配器以代表您提取第三方广告。如果您不需要指定任何其他请求参数,那么现在您就已经大功告成!如果您需要指定其他参数,请阅读下文以了解如何向中介广告联盟提供更多信息。

使用 Activity 实例初始化您的广告对象

在新广告对象(例如 AdView)的构造函数中,您必须传入类型为 Context 的对象。使用中介时,此 Context 会传递到其他广告联盟。某些广告联盟需要类型为 Activity 且条件更严格的 Context,并且如果没有 Activity 实例,可能无法投放广告。因此,我们建议在初始化广告对象时传入 Activity 实例,以确保从您的所有中介广告联盟获得一致的体验。

中介中面向儿童的内容

DFP 中介有助于相关各方遵守《儿童在线隐私保护法》(COPPA)。

通过在 Google 移动广告 SDK 中设置 tagForChildDirectedTreatment(true),可指明您的内容是否应被视为 COPPA 界定的面向儿童的内容。Google 会将此信息提供给中介中的第三方广告联盟,以促使相关各方遵守 COPPA。有关详情,请参阅将广告请求标记为面向儿童的内容 (TFCD)

DFP 只是一个平台。广告关系是在移动应用开发者和第三方广告联盟之间形成的,因此开发者有责任确保每个第三方广告联盟所投放的广告都将开发者内容视为 COPPA 界定的面向儿童的内容。

指定其他请求参数(可选)

您可以视需要在 PublisherAdRequest 中添加用户的性别和生日等受众特征定位信息。这些类型的信息可以用来帮助广告联盟更精确地定位广告。

我们提供了设置性别和生日的方法。系统会将这些信息传递给所有接受相应参数的广告联盟。请查看以下示例:

PublisherAdRequest adRequest = new PublisherAdRequest.Builder()
    .setGender(PublisherAdRequest.GENDER_FEMALE)
    .setBirthday(new GregorianCalendar(1985, 1, 1).getTime())  // January 1, 1985
    .build();

一些广告联盟还支持其他仅适用于其自身的请求参数。请参阅下面的“v1”或“v2”说明,了解如何向这些广告联盟提供此类参数。如果您不确定适配器是 v1 还是 v2,请尝试使用适配器类调用 addNetworkExtrasBundle(详见下文中的“v2”部分)。如果适配器可以编译,则说明是 v2 适配器,否则就是 v1 适配器。请注意,您可以在同一个应用中同时使用 v1 和 v2 适配器。

v1

您可以使用 PublisherAdRequestaddNetworkExtras() 方法将额外的参数传递到特定中介广告联盟。addNetworkExtras() 方法会接收实现 NetworkExtras 的类的实例。

每个广告联盟都会定义自己的 extras 类。下表显示了部分广告联盟为这些类设置的名称。

广告联盟 其他参数类
Millennial Media com.google.ads.mediation.millennial.MillennialAdapterExtras
InMobi com.google.ads.mediation.inmobi.InMobiAdapterExtras

例如,Millennial Media 和 InMobi 都允许指定用户的收入以提供更相关的广告。要让中介框架在向这些广告联盟请求广告时传递收入信息,您可以使用以下代码:

import com.google.android.gms.ads.doubleclick.PublisherAdRequest;
import com.google.android.gms.ads.doubleclick.PublisherAdView;
import com.google.ads.mediation.inmobi.InMobiAdapterExtras;
import com.google.ads.mediation.millennial.MillennialAdapterExtras;

/* … */

    /* Set parameters common to all networks in ad request. */

    // Millennial Media extra parameters.
    MillennialAdapterExtras millennialExtras = new MillennialAdapterExtras();
    millennialExtras.setIncomeInUsDollars(65000);

    // InMobi extra parameters.
    InMobiAdapterExtras inMobiExtras = new InMobiAdapterExtras();
    inMobiExtras.setIncome(65000);

    // Create the ad request with these extra parameters.
    PublisherAdRequest adRequest = new PublisherAdRequest.Builder()
        .addNetworkExtras(millennialExtras)
        .addNetworkExtras(inMobiExtras)
        .build();

    // Finally, request the ad.
    adView.loadAd(adRequest);
v2

您可以使用 PublisherAdRequest.Builder 上的 addNetworkExtrasBundle() 方法将额外的参数传递到特定的中介广告联盟。请传递要向其发送参数的适配器类,另外还请传递适配器要使用的值的集合。

在大多数情况下,如果适配器支持额外的参数,则会用常量来代表该集合的相应密钥,或者使用某个方法帮助生成有效的集合以传递到其所属的广告联盟。

常见问题解答

广告监听器是否仍支持中介?
是的,广告监听器仍支持所有中介广告联盟。
v1 中介适配器是否支持 Google Play 服务?
支持。Google Play 服务中包含移动广告 SDK 就是为了继续向后兼容 v1 中介适配器。
我要在中介配置中添加一个新的广告联盟,以便在应用的下一个版本中使用。这会给我当前版本的应用(不包括此广告联盟)带来怎样的影响?
SDK 会检测到相应适配器不存在并依照设计发出失败消息;相应请求会在中介按序调用备用广告过程中发送到下一个广告联盟。
“Could not instantiate mediation adapter: x.y.z.SomeAdapter”错误消息是什么意思?
您的项目可能缺少包含此类的适配器库。您需要为您要启用中介功能的所有广告联盟添加广告联盟适配器和 SDK

发送以下问题的反馈:

此网页
SDK for DFP Users on Android
需要帮助?请访问我们的支持页面