横幅广告

横幅广告是占据应用部分布局的矩形广告。他们 当用户与应用互动时停留在屏幕上(锚定在 或在用户滚动屏幕时内嵌到屏幕的顶部或底部。横幅 广告可以在一段时间后自动刷新。查看横幅广告概览

本指南介绍了如何开始使用锚定广告 自适应横幅广告 该功能可针对每种设备优化广告尺寸 指定广告宽度

锚定自适应横幅广告是宽高比固定的广告,而非常规的 固定尺寸广告。宽高比类似于业界标准的 320x50。一次 您指定了可用的全宽,系统会为您返回 高度。无论从哪个请求发送, 广告,并且当广告展示时,周围的视图无需移动 刷新。

前提条件

始终使用测试广告进行测试

在构建和测试应用时,请务必使用测试广告 实际投放的广告。否则,可能会导致您的账号被暂停。

对于 Android 横幅广告,加载测试广告最简便的方法就是使用下面的测试专用广告单元 ID:

/21775744923/example/adaptive-banner

该测试广告单元 ID 已经过专门配置,可为每个请求返回测试广告,而且您可以 在自己应用的编码、测试和调试过程中使用。只需确保您 请将其替换为您自己的广告单元 ID,然后再发布应用。

如需详细了解移动广告 SDK 的测试广告如何运作,请参阅测试 广告

将 AdManagerAdView 添加到布局中

要展示横幅广告,首先要将 AdManagerAdView 放置 :

Java

// Create a new ad view.
adView = new AdManagerAdView(this);
adView.setAdUnitId(AD_UNIT);
adView.setAdSize(getAdSize());

// Replace ad container with new ad view.
adContainerView.removeAllViews();
adContainerView.addView(adView);

Kotlin

// Create a new ad view.
val adView = AdManagerAdView(this)
adView.adUnitId = AD_UNIT_ID
adView.setAdSize(adSize)
this.adView = adView

// Replace ad container with new ad view.
binding.adViewContainer.removeAllViews()
binding.adViewContainer.addView(adView)

加载广告

AdManagerAdView 放置好后,下一步是加载广告。您可以使用 loadAd() 方法(在 AdManagerAdView 类中)。此方法需要一个 AdManagerAdRequest 参数,该参数中包含关于单个广告请求的运行时信息(如定位信息)。

以下示例展示了如何加载广告:

Java

// Start loading the ad in the background.
AdManagerAdRequest adRequest = new AdManagerAdRequest.Builder().build();
adView.loadAd(adRequest);

Kotlin

// Start loading the ad in the background.
val adRequest = AdManagerAdRequest.Builder().build()
adView.loadAd(adRequest)

如果广告加载失败,您无需明确请求另一个广告,因为 但前提是您已将广告单元配置为刷新Google 移动广告 SDK 采用您在 Ad Manager 中指定的任何刷新率 网页界面如果您尚未启用刷新,则需要 请求。

大功告成!您的应用现在就可以展示横幅广告了。

广告事件

您可以监听广告生命周期中的多种事件,包括加载、广告展示和点击,以及广告打开和关闭事件。建议 在加载横幅广告之前设置回调。

Java

adView.setAdListener(new AdListener() {
    @Override
    public void onAdClicked() {
      // Code to be executed when the user clicks on an ad.
    }

    @Override
    public void onAdClosed() {
      // Code to be executed when the user is about to return
      // to the app after tapping on an ad.
    }

    @Override
    public void onAdFailedToLoad(LoadAdError adError) {
      // Code to be executed when an ad request fails.
    }

    @Override
    public void onAdImpression() {
      // Code to be executed when an impression is recorded
      // for an ad.
    }

    @Override
    public void onAdLoaded() {
      // Code to be executed when an ad finishes loading.
    }

    @Override
    public void onAdOpened() {
      // Code to be executed when an ad opens an overlay that
      // covers the screen.
    }
});

Kotlin

adView.adListener = object: AdListener() {
    override fun onAdClicked() {
      // Code to be executed when the user clicks on an ad.
    }

    override fun onAdClosed() {
      // Code to be executed when the user is about to return
      // to the app after tapping on an ad.
    }

    override fun onAdFailedToLoad(adError : LoadAdError) {
      // Code to be executed when an ad request fails.
    }

    override fun onAdImpression() {
      // Code to be executed when an impression is recorded
      // for an ad.
    }

    override fun onAdLoaded() {
      // Code to be executed when an ad finishes loading.
    }

    override fun onAdOpened() {
      // Code to be executed when an ad opens an overlay that
      // covers the screen.
    }
}

其中每种可替换的方法 AdListener 对应于广告生命周期内的事件。

可替换的方法
onAdClicked() 记录了广告获得的点击后,系统会调用 onAdClicked() 方法。
onAdClosed() onAdClosed() 方法。 目标网址应用可以使用此方法恢复暂停的活动,或 执行任何其他必要的操作,以做好互动准备。
onAdFailedToLoad() onAdFailedToLoad() 是唯一包含参数的方法。类型的错误参数 LoadAdError 描述了发生了什么错误。如需了解详情,请参阅“调试广告加载错误”文档
onAdImpression() onAdImpression() 方法。
onAdLoaded() onAdLoaded() 方法。如果您想推迟 添加 AdManagerAdView 直到确定广告会加载为止 您可以在此处执行此操作。
onAdOpened() onAdOpened() 方法。

适用于视频广告的硬件加速功能

要想让视频广告在横幅广告视图中成功展示,硬件 加速必须 。

硬件加速默认处于启用状态,但有些应用可能会选择将其停用。如果您的应用属于这种情况,我们建议您为 Activity 类使用广告。

启用硬件加速

如果您的应用在启用硬件加速时无法正常运行 也可以针对单个活动进行控制要启用或 停用硬件加速,则可以使用 android:hardwareAccelerated 属性 <application><activity> AndroidManifest.xml 中的一些元素。以下示例展示了如何将硬件 加速,但对一个 activity 停用加速:

<application android:hardwareAccelerated="true">
    <!-- For activities that use ads, hardwareAcceleration should be true. -->
    <activity android:hardwareAccelerated="true" />
    <!-- For activities that don't use ads, hardwareAcceleration can be false. -->
    <activity android:hardwareAccelerated="false" />
</application>

有关详情,请参阅硬件加速 指南,了解更多信息 有关用于控制硬件加速的选项的信息。请注意, 对于单个广告浏览,如果相应活动 已停用,因此 activity 本身必须启用硬件加速。

手动展示次数统计

手动展示次数统计仅适用于直销型和自家广告系列 包含直接在 Ad Manager 中投放的广告素材的广告系列。不应 用于补余广告或第三方广告联盟广告。有关详情,请参阅计数 展示次数和点击次数

如果您有特殊的广告请求,可以手动向 Ad Manager 发送展示 ping 应记录展示的条件。为此,请启用 AdManagerAdRequest(适用于加载广告之前的手动展示次数):

Java

AdManagerAdRequest adRequest = new AdManagerAdRequest.Builder()
    .setManualImpressionsEnabled(true)
    .build();

Kotlin

val adRequest = AdManagerAdRequest.Builder()
    .setManualImpressionsEnabled(true)
    .build()

当您确定某个广告已成功返回并展示在屏幕上时 您可以手动记录展示次数:

Java

{ ad_view }.recordManualImpression();

Kotlin

AdManagerAdView.recordManualImpression()

应用事件

借助应用事件,您可以制作能够向应用代码发送消息的广告。应用 然后根据这些消息采取相应措施

您可以使用 AppEventListener 监听 Ad Manager 所特有的应用事件。 这些事件可能会发生在广告生命周期内的任何时间,甚至是在调用 onAdLoaded() 之前。

Java

public interface AppEventListener {
  void onAppEvent(String name, String info);
}

Kotlin

interface AppEventListener {
    fun onAppEvent(name: String, info: String)
}

当发生应用事件时,系统会调用 void onAppEvent(String name, String info) 。此接口可由您的 activity 或任何其他应用实现 对象:

Java

import com.google.android.gms.ads.admanager.*;

public class BannerExample extends Activity implements AppEventListener {
}

Kotlin

import com.google.android.gms.ads.admanager.*

class BannerExample : Activity(), AppEventListener {
}

然后传递给 AdManagerAdView

Java

AdManagerAdView.setAppEventListener(this);

Kotlin

AdManagerAdView.appEventListener = this

下面的示例展示了如何根据带颜色名称的应用事件更改应用的背景颜色:

Java

@Override
public void onAppEvent(String name, String info) {
  if ("color".equals(name)) {
    if ("green".equals(info)) {
      // Set background color to green.
    } else if ("blue".equals(info)) {
      // Set background color to blue.
    } else {
      // Set background color to black.
    }
  }
}

Kotlin

override fun onAppEvent(name: String?, info: String?) {
    if (name == "color") {
        when (info) {
            "green" -> {
                // Set background color to green.
            }
            "blue" -> {
                // Set background color to blue.
            }
            else -> {
                // Set background color to black.
            }
        }
    }
}

另外,以下是向 监听器:

<html>
<head>
  <script src="//www.gstatic.com/afma/api/v1/google_mobile_app_ads.js"></script>
  <script>
    document.addEventListener("DOMContentLoaded", function() {
      // Send a color=green event when ad loads.
      admob.events.dispatchAppEvent("color", "green");

      document.getElementById("ad").addEventListener("click", function() {
        // Send a color=blue event when ad is clicked.
        admob.events.dispatchAppEvent("color", "blue");
      });
    });
  </script>
  <style>
    #ad {
      width: 320px;
      height: 50px;
      top: 0px;
      left: 0px;
      font-size: 24pt;
      font-weight: bold;
      position: absolute;
      background: black;
      color: white;
      text-align: center;
    }
  </style>
</head>
<body>
  <div id="ad">Carpe diem!</div>
</body>
</html>

有关应用事件的实现方式,请参阅 Ad Manager 应用事件示例 API 演示版应用。

Java Kotlin

其他资源

GitHub 上的示例

  • 锚定自适应横幅广告示例: Java | Kotlin

后续步骤

折叠式横幅广告

折叠式横幅广告是一种横幅广告,最初会以较大的叠加层形式展示,并提供一个可将广告收起为较小尺寸的按钮。考虑使用 进一步优化广告效果如需了解详情,请参阅折叠式横幅广告

内嵌自适应横幅广告

与锚定自适应横幅广告相比,内嵌自适应横幅广告是一种更大、更高的横幅广告 横幅广告。它们的高度可以调整,可以达到设备屏幕的高度。 对于以下情况,我们建议采用内嵌自适应横幅广告,而不是锚定自适应横幅广告 在可滚动内容中投放横幅广告的应用。请参阅内联自适应 横幅

浏览其他主题