为 Ad Exchange 设置直接访问权限

Google 移动广告 SDK 支持使用 Ad Exchange 媒体资源通过应用创收。本指南介绍了如何为 Ad Exchange 支持的所有广告格式配置应用。

前提条件

配置您的应用以访问 Ad Exchange

通过包含 android:name="com.google.android.gms.ads.APPLICATION_ID"<meta-data> 标记,将您的 Ad Manager 应用 ID(可在 Ad Manager 界面中找到)添加到应用的 AndroidManifest.xml 文件中。对于 android:value,请插入您自己的 Ad Manager 应用 ID,并用英文引号括起来。

<manifest>
    <application>
        <!-- Sample Ad Manager app ID: ca-app-pub-3940256099942544~3347511713 -->
        <meta-data
            android:name="com.google.android.gms.ads.APPLICATION_ID"
            android:value="ca-app-pub-xxxxxxxxxxxxxxxx~yyyyyyyyyy"/>
    </application>
</manifest>

另请注意,如果未能如上所示添加 <meta-data> 代码,会导致崩溃,并显示以下消息:

Missing application ID.

接下来,您可以初始化 Google 移动广告 SDK,并选择要展示的广告格式。本指南的其余部分将实现横幅广告格式,以说明如何从 Ad Exchange 加载广告。同样的步骤适用于 Google 移动广告 SDK 支持的任何广告格式。

从 Ad Exchange 加载广告

您可以在应用中使用带有尾部正斜线的 Ad Exchange 网站媒体资源代码,而不是广告单元 ID。

例如,如需通过在 Activity 的布局中放置 AdManagerAdView 来加载横幅广告,请按如下所示操作:

# main_activity.xml
...
  <com.google.android.gms.ads.admanager.AdManagerAdView
      xmlns:ads="http://schemas.android.com/apk/res-auto"
      android:id="@+id/adManagerAdView"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_centerHorizontal="true"
      android:layout_alignParentBottom="true"
      ads:adSize="BANNER"
      ads:adUnitId="ca-mb-app-pub-5629679302779023/">
  </com.google.android.gms.ads.admanager.AdManagerAdView>

请注意,如果未能如上所示向 Ad Exchange 网站媒体资源代码添加尾部正斜线,将导致广告请求出错,并显示以下消息:

Invalid Request. Cannot determine request type. Is your ad unit id correct?

另请注意,您可以将 Ad Exchange 网站媒体资源代码转换为广告单元。然后,您可以使用 Ad Manager 界面生成 Ad Exchange 代码,并将其复制到您的应用中。生成的代码应包含 Ad Exchange 网站媒体资源代码,后跟不带尾部正斜线的后代广告单元 ID,例如:ca-mb-app-pub-5629679302779023/banner

或者,您也可以通过编程方式创建 AdManagerAdView

JavaKotlin
AdManagerAdView adView = new AdManagerAdView(this);

adView.setAdSizes(AdSize.BANNER);
adView.setAdUnitId("ca-mb-app-pub-5629679302779023/");

// TODO: Add adView to your view hierarchy.
val adView = AdManagerAdView(this)

adView.adSizes = AdSize.BANNER
adView.adUnitId = "ca-mb-app-pub-5629679302779023/"

// TODO: Add adView to your view hierarchy.

AdManagerAdView 就绪后,您可以在 AdManagerAdView 类中调用 loadAd() 方法,并使用广告事件自定义广告的行为。

大功告成!您的应用现已准备好加载和展示 Ad Exchange 横幅广告了。

此外,您还可以使用 Ad Exchange 网站媒体资源来加载和展示 Ad Exchange 中的其他广告格式,具体方法请参阅相应的指南:

(仅限已获批准的欧洲发布商)添加底价

您可以申请使用“底价”功能

获得批准后,您可以分别使用 pubfpvtf 参数在广告请求中添加公开底价或不公开底价。在以下代码示例中,将“123”替换为以微单位表示的底价和广告联盟的默认货币。微分应用示例:如果您的默认货币为美元,输入“6000000”相当于 6.00 美元。

JavaKotlin
Bundle extras = new Bundle();
// Public floor parameter.
extras.putString("pubf", "123");
// Private floor parameter.
extras.putString("pvtf", "123");

AdManagerAdRequest request = new AdManagerAdRequest.Builder()
    .addNetworkExtrasBundle(AdMobAdapter.class, extras)
    .build();
val extras = Bundle();
// Public floor parameter.
extras.putString("pubf", "123");
// Private floor parameter.
extras.putString("pvtf", "123");

val request = AdManagerAdRequest.Builder()
    .addNetworkExtrasBundle(AdMobAdapter::class::java, extras)
    .build();