使用折叠式横幅广告

折叠式横幅广告最初会以较大的叠加层形式展示,并提供一个按钮,用于将其折叠为最初请求的横幅广告尺寸。折叠式横幅广告旨在提升原本只能以较小尺寸展示的锚定广告的效果。本指南介绍了如何为现有的横幅广告展示位置启用折叠式横幅广告。

前提条件

实现

请确保您为横幅广告视图定义的尺寸,正是您希望用户在常规(已折叠)横幅广告状态下看到的尺寸。在广告请求中添加一个 extras 参数,将 collapsible 设为键,并将广告的展示位置设为值。

这个可折叠的展示位置定义了展开后的区域如何锚定到横幅广告。

Placement 值 行为 预期应用场景
top 展开的广告顶部与折叠的广告顶部对齐。 广告位于屏幕顶部。
bottom 展开的广告底部与折叠的广告底部对齐。 广告位于屏幕底部。

如果加载的广告是折叠式横幅广告,那么当广告被添加到视图层次结构后,会立即显示可折叠的叠加层:

Kotlin

private fun loadCollapsibleBannerAd(adView: AdView, activity: Activity) {
  val adSize = AdSize.getLargeAnchoredAdaptiveBannerAdSize(activity, 360)

  // Create an extra parameter that aligns the bottom of the expanded ad to
  // the bottom of the adView.
  val extras = Bundle()
  extras.putString("collapsible", "bottom")

  val adRequest =
    BannerAdRequest.Builder(AD_UNIT_ID, adSize).setGoogleExtrasBundle(extras).build()

  adView.loadAd(
    adRequest,
    object : AdLoadCallback<BannerAd> {
      override fun onAdLoaded(ad: BannerAd) {
        Log.i(
          TAG,
          "The last loaded banner is ${if (ad.isCollapsible()) "" else "not "}collapsible.",
        )
      }


      override fun onAdFailedToLoad(adError: LoadAdError) {
        Log.d(TAG, "Banner ad failed to load: $adError")
      }
    },
  )
}

Java

private void loadCollapsibleBannerAd(@NonNull AdView adView, @NonNull Activity activity) {
  AdSize adSize = AdSize.getLargeAnchoredAdaptiveBannerAdSize(activity, 360);

  // Create an extra parameter that aligns the bottom of the expanded ad to
  // the bottom of the adView.
  Bundle extras = new Bundle();
  extras.putString("collapsible", "bottom");

  BannerAdRequest adRequest =
      new BannerAdRequest.Builder(AD_UNIT_ID, adSize).setGoogleExtrasBundle(extras).build();

  adView.loadAd(
      adRequest,
      new AdLoadCallback<BannerAd>() {
        @Override
        public void onAdLoaded(@NonNull BannerAd ad) {
          Log.i(
              TAG,
              String.format(
                  "The last loaded banner is %scollapsible.", ad.isCollapsible() ? "" : "not "));
        }


        @Override
        public void onAdFailedToLoad(@NonNull LoadAdError adError) {
          Log.d(TAG, "Banner ad failed to load: " + adError);
        }
      });
}

将 AD_UNIT_ID 替换为您的广告单元 ID。

广告刷新行为

对于在 Ad Manager 网页界面中为横幅广告配置了自动刷新功能的应用,当为某个横幅广告位请求了折叠式横幅广告后,后续的广告刷新将不再请求此类广告。这是因为在每次刷新时都显示折叠式横幅广告可能会对用户体验产生负面影响。

如果您希望晚一点在会话中再加载一个折叠式横幅广告,可以使用包含 collapsible 参数的请求手动加载广告。

检查加载的广告是否可折叠

为实现最佳广告效果,当您发起折叠式横幅广告请求时,系统有时也可能会返回一个非折叠式横幅广告。如果发起请求后加载失败,而上一个横幅广告是折叠式广告,该 API 会返回 true 值。如需检查上次加载的横幅广告是否为折叠式广告,请调用 isCollapsible 方法:

Kotlin

override fun onAdLoaded(ad: BannerAd) {
  Log.i(
    TAG,
    "The last loaded banner is ${if (ad.isCollapsible()) "" else "not "}collapsible.",
  )
}

Java

@Override
public void onAdLoaded(@NonNull BannerAd ad) {
  Log.i(
      TAG,
      String.format(
          "The last loaded banner is %scollapsible.", ad.isCollapsible() ? "" : "not "));
}

中介

折叠式横幅广告仅适用于 Google 需求来源。通过中介投放的广告会显示为常规的非折叠式横幅广告。