橫幅廣告

橫幅廣告是會佔用應用程式版面配置一部分的矩形廣告。使用者與應用程式互動時,這類廣告會固定顯示在畫面頂端或底部,或在使用者捲動瀏覽內容時,持續顯示在畫面上。橫幅廣告會在一段時間後自動重新整理。詳情請參閱 橫幅廣告總覽

本指南將說明如何開始使用 錨定自動調整橫幅廣告,這項功能會根據您指定的廣告寬度,為每種裝置調整出最佳廣告大小,盡可能提高成效。

錨定自動調整橫幅廣告是固定的顯示比例廣告,而非一般固定大小的廣告。長寬比與 320x50 業界標準類似。指定可用完整寬度後,系統便會傳回與該寬度最理想高度的廣告。不同裝置的請求之間,最佳高度不會改變,周圍檢視畫面也不需要在廣告重新整理時移動。

必要條件

一律使用測試廣告進行測試

建構及測試應用程式時,請務必使用測試廣告,而非正式版廣告。否則可能導致帳戶遭到停權。

載入測試廣告最簡單的方法,就是使用 Android 橫幅廣告專用的測試廣告單元 ID:

ca-app-pub-3940256099942544/9214589741

系統已針對每項請求傳回測試廣告,而您可以將廣告用於自己的應用程式,同時對編寫、測試及偵錯時使用。但請注意,請務必先替換成自己的廣告單元 ID,再發布應用程式。

如要進一步瞭解 Mobile Ads 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 準備就緒後,下一步就是載入廣告。方法是使用 AdView 類別中的 loadAd() 方法。會使用 AdRequest 參數,其中含有單一廣告請求的指定目標資訊等執行階段資訊。

以下範例說明如何在 ActivityonCreate() 方法中載入廣告:

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 Mobile Ads 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() 方法。您的應用程式可運用這個 API 恢復已停權的活動,或執行任何其他必要工作以做好互動準備。 如需在 Android API 試用版應用程式中導入廣告事件監聽器方法的方法,請參閱 AdMob AdListener 範例
onAdFailedToLoad() 只有 onAdFailedToLoad() 方法包含參數。LoadAdError 類型的錯誤參數說明發生了什麼錯誤。詳情請參閱偵錯廣告載入錯誤說明文件
onAdImpression() 系統記錄廣告曝光時,會叫用 onAdImpression() 方法。
onAdLoaded() 廣告載入完畢後,系統會執行 onAdLoaded() 方法。舉例來說,如果想延後將 AdView 新增至活動或片段,直到確定廣告可載入為止,您可以在這裡進行設定。
onAdOpened() 廣告開啟重疊顯示該畫面時,系統會叫用 onAdOpened() 方法。

影片廣告的硬體加速功能

為了讓影片廣告順利在橫幅廣告檢視畫面中顯示,您必須啟用硬體加速

系統預設會啟用硬體加速,但部分應用程式可能會選擇停用。如果您的應用程式符合這種情況,建議您為使用廣告的 Activity 類別啟用硬體加速功能。

啟用硬體加速

如果全域開啟硬體加速時,您的應用程式無法正常運作,也可以個別控制各項活動。如要啟用或停用硬體加速,您可以在 AndroidManifest.xml 中針對 <application><activity> 元素使用 android:hardwareAccelerated 屬性。以下示範為整個應用程式啟用硬體加速,但針對一項活動停用此功能:

<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>

如要進一步瞭解控制硬體加速的選項,請參閱硬體加速指南。請注意,如果停用了個別活動,就無法為個別廣告檢視畫面啟用硬體加速,因此活動本身必須啟用硬體加速功能。

其他資源

GitHub 上的範例

  • 錨定自動調整橫幅廣告範例:Java | Kotlin

後續步驟

可收合橫幅廣告

可收合橫幅廣告是指最初以較大的重疊廣告方式呈現的橫幅廣告,其中包含可將廣告收合為較小的尺寸的按鈕。建議您利用這項功能進一步最佳化效能。詳情請參閱可收合橫幅廣告

內嵌自動調整橫幅廣告

與錨定自動調整橫幅廣告相比,內嵌自動調整橫幅廣告會尺寸更大、圖示也更高。它們的高度可變,而且高度與裝置螢幕高度一樣。如果應用程式會在可捲動內容中刊登橫幅廣告,建議採用內嵌自動調整橫幅廣告,而非錨定自動調整橫幅廣告。詳情請參閱內嵌自動調整橫幅廣告

探索其他主題