横幅广告

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

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

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

前提条件

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

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

要加载测试广告,最简便的方法就是使用我们的专用测试广告单元 ID Android 横幅广告:

ca-app-pub-3940256099942544/9214589741

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

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

将 AdView 添加到布局中

要展示横幅广告,首先要将 AdView 放置 在您希望显示它的 ActivityFragment 的布局中 :

Java

private AdSize getAdSize() {
  // Determine the screen width (less decorations) to use for the ad width.
  Display display = getWindowManager().getDefaultDisplay();
  DisplayMetrics outMetrics = new DisplayMetrics();
  display.getMetrics(outMetrics);

  float density = outMetrics.density;

  float adWidthPixels = adContainerView.getWidth();

  // If the ad hasn't been laid out, default to the full screen width.
  if (adWidthPixels == 0) {
    adWidthPixels = outMetrics.widthPixels;
  }

  int adWidth = (int) (adWidthPixels / density);
  return AdSize.getCurrentOrientationAnchoredAdaptiveBannerAdSize(this, adWidth);
}

private void loadBanner() {
  
  // Create a new ad view.
  AdView adView = new AdView(this);
  adView.setAdSizes(getAdSize());
  adView.setAdUnitId("ca-app-pub-3940256099942544/9214589741");

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

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

Kotlin


// Determine the screen width (less decorations) to use for the ad width.
// If the ad hasn't been laid out, default to the full screen width.
private val adSize: AdSize
  get() {
    val display = windowManager.defaultDisplay
    val outMetrics = DisplayMetrics()
    display.getMetrics(outMetrics)

    val density = outMetrics.density

    var adWidthPixels = binding.adViewContainer.width.toFloat()
    if (adWidthPixels == 0f) {
      adWidthPixels = outMetrics.widthPixels.toFloat()
    }

    val adWidth = (adWidthPixels / density).toInt()
    return AdSize.getCurrentOrientationAnchoredAdaptiveBannerAdSize(this, adWidth)
  }

private fun loadBanner() {
  
  // Create a new ad view.
  val adView = AdView(this)
  adView.adSizes = adSize
  adView.adUnitId = "ca-app-pub-3940256099942544/9214589741"

  // Create an ad request.
  val adRequest = AdRequest.Builder().build()

  // Start loading the ad in the background.
  adView.loadAd(adRequest)
}

加载广告

AdView 就位后,下一步是 加载广告。您可以使用 loadAd() 方法。AdView需要 AdRequest 参数,其中包含运行时信息,如定位信息、 发出一个广告请求。

下例显示了如何通过onCreate() Activity:

Java

private void loadBanner() {
  // Create a new ad view.
  adView = new AdView(this);
  adView.setAdUnitId(AD_UNIT);
  adView.setAdSize(getAdSize());
  
  // Replace ad container with new ad view.
  adContainerView.removeAllViews();
  adContainerView.addView(adView);

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

Kotlin

private fun loadBanner() {
  // This is an ad unit ID for a test ad. Replace with your own banner ad unit ID.
  adView.adUnitId = "/6499/example/banner"
  adView.setAdSize(adSize)
  
  // Create an ad request.
  val adRequest = AdRequest.Builder().build()

  // Start loading the ad in the background.
  adView.loadAd(adRequest)
}

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

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

广告事件

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

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() 方法。 目标网址应用可以使用此方法恢复暂停的活动,或 执行任何其他必要的操作,以做好互动准备。 请参阅 AdMob AdListener 示例,展示了 Android API 演示版应用。
onAdFailedToLoad() onAdFailedToLoad() 是唯一包含参数的方法。类型的错误参数 LoadAdError 描述了发生了什么错误。如需更多信息 有关调试广告加载错误,请参阅调试广告加载错误 文档
onAdImpression() onAdImpression() 方法。
onAdLoaded() onAdLoaded() 方法。如果您想推迟 添加 AdView 直到确定广告会加载为止 您可以在此处执行此操作。
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 本身必须启用硬件加速。

其他资源

GitHub 上的示例

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

后续步骤

折叠式横幅广告

折叠式横幅广告是一种横幅广告,初始展示时采用较大的 叠加层,以及一个可将广告合拢为较小尺寸的按钮。考虑使用 进一步优化广告效果如需了解详情,请参阅折叠式横幅广告

内嵌自适应横幅广告

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

浏览其他主题