橫幅廣告

選取平台: Android iOS Unity Flutter

橫幅廣告 是佔用應用程式版面配置一部分的矩形廣告。錨定自動調整橫幅廣告是固定長寬比的廣告,使用者與應用程式互動時,這類廣告會固定顯示在畫面頂端或底部。

本指南說明如何在 Android 應用程式中載入錨定自動調整橫幅廣告。

必要條件

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

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

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

ca-app-pub-3940256099942544/9214589741

這個 ID 經過特別設定,可針對每項要求傳回測試廣告,您可以在編寫、測試及偵錯時,在自己的應用程式中使用這個 ID。發布應用程式前,請務必將其替換為您自己的廣告單元 ID。

如要進一步瞭解 Google Mobile Ads SDK 測試廣告的運作方式,請參閱「啟用測試廣告」。

定義廣告檢視畫面

XML 版面配置

在版面配置 XML 檔案中新增檢視區塊,做為錨定式自適應橫幅廣告的容器:

<!-- Ad view container that fills the width of the screen and adjusts its
    height to the content of the ad. -->
<FrameLayout
        android:id="@+id/ad_view_container"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:layout_alignParentBottom="true" />

Jetpack Compose

  1. 首先,請加入 JetpackComposeDemo/compose-util 模組。這個模組包含用於撰寫 AdView 物件和資產的輔助程式。

  2. 步驟 2:使用 compose-util 模組編寫 BannerAd 類別:


// Place the ad view at the bottom of the screen.
Column(modifier = modifier.fillMaxSize(), verticalArrangement = Arrangement.Bottom) {
  Box(modifier = modifier.fillMaxWidth()) { BannerAd(adView, modifier) }
}

設定廣告大小

AdSize 設為錨定自動調整橫幅廣告類型,並指定寬度:

Java

// Request an anchored adaptive banner with a width of 360.
adView.setAdSize(AdSize.getCurrentOrientationAnchoredAdaptiveBannerAdSize(this, 360));

Kotlin

// Request an anchored adaptive banner with a width of 360.
adView.setAdSize(AdSize.getCurrentOrientationAnchoredAdaptiveBannerAdSize(this, 360))

Jetpack Compose


// Set the adaptive banner ad size with a given width.
val adSize = AdSize.getCurrentOrientationAnchoredAdaptiveBannerAdSize(LocalContext.current, 360)
adView.setAdSize(adSize)

在版面配置中新增 AdView

使用廣告大小建立 AdView,加入應用程式的版面配置:

Java


// Create a new ad view.
adView = new AdView(this);
adView.setAdUnitId(AD_UNIT_ID);
// Request an anchored adaptive banner with a width of 360.
adView.setAdSize(AdSize.getCurrentOrientationAnchoredAdaptiveBannerAdSize(this, 360));

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

Kotlin


// Create a new ad view.
val adView = AdView(this)
adView.adUnitId = AD_UNIT_ID
// Request an anchored adaptive banner with a width of 360.
adView.setAdSize(AdSize.getCurrentOrientationAnchoredAdaptiveBannerAdSize(this, 360))
this.adView = adView

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

Jetpack Compose


val adView = remember { AdView(context) }

// Setup and load the adview.
// Set the unique ID for this specific ad unit.
adView.adUnitId = BANNER_AD_UNIT_ID

// Set the adaptive banner ad size with a given width.
val adSize = AdSize.getCurrentOrientationAnchoredAdaptiveBannerAdSize(LocalContext.current, 360)
adView.setAdSize(adSize)

// Place the ad view at the bottom of the screen.
Column(modifier = modifier.fillMaxSize(), verticalArrangement = Arrangement.Bottom) {
  Box(modifier = modifier.fillMaxWidth()) { BannerAd(adView, modifier) }
}

載入廣告

AdView就位後,下一步是載入廣告。這項作業是透過 AdView 類別的 loadAd() 方法完成。這個函式會採用 AdRequest 參數,其中包含單一廣告請求的指定目標資訊等執行階段資訊。

以下範例說明如何載入廣告:

Java

AdManagerAdRequest adRequest = new AdManagerAdRequest.Builder().build();
adView.loadAd(adRequest);

Kotlin

val adRequest = AdRequest.Builder().build()
adView.loadAd(adRequest)

如果成功,您的應用程式就能顯示橫幅廣告。

重新整理廣告

如果您已將廣告單元設為重新整理,廣告載入失敗時,就不必要求其他廣告。Google Mobile Ads SDK 會遵守您在 AdMob 使用者介面中指定的任何重新整理頻率。如果尚未啟用重新整理功能,請發出新的要求。如要進一步瞭解廣告單元重新整理功能,例如設定重新整理頻率,請參閱「使用橫幅廣告自動重新整理功能」。

發布廣告資源

使用完橫幅廣告後,您可以釋放橫幅廣告的資源。

如要釋放廣告的資源,請從檢視區塊階層中移除廣告,並捨棄所有參照:

Kotlin

// Remove banner from view hierarchy.
val parentView = adView?.parent
if (parentView is ViewGroup) {
  parentView.removeView(adView)
}

// Destroy the banner ad resources.
adView?.destroy()

// Drop reference to the banner ad.
adView = null

Java

// Remove banner from view hierarchy.
if (adView.getParent() instanceof ViewGroup) {
  ((ViewGroup) adView.getParent()).removeView(adView);
}
// Destroy the banner ad resources.
adView.destroy();
// Drop reference to the banner ad.
adView = null;

Jetpack Compose


DisposableEffect(Unit) {
  // Destroy the AdView to prevent memory leaks when the screen is disposed.
  onDispose { adView.destroy() }
}

廣告事件

您可以監聽廣告生命週期中的多個事件,包括載入、廣告曝光和點擊,以及廣告開啟和關閉事件。建議您在載入橫幅前設定回呼。

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() 方法。應用程式可使用此方法繼續執行暫停的活動,或執行任何其他必要工作,讓應用程式準備好進行互動。如要在 Android API Demo 應用程式中導入廣告事件監聽器方法,請參閱 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>

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

後續步驟

可收合橫幅廣告

可收合橫幅廣告一開始會以較大的重疊廣告顯示,並提供按鈕,可將廣告收合為較小尺寸。建議您使用這項功能,進一步提升成效。詳情請參閱可收合橫幅廣告

自動調整內嵌橫幅廣告

與錨定自動調整橫幅廣告相比,自動調整內嵌橫幅廣告更大、更高。自動調整橫幅廣告的高度可變,甚至可與裝置螢幕一樣高。如果應用程式在可捲動內容中放送橫幅廣告,建議使用內嵌自動調整橫幅廣告,而非錨定自動調整橫幅廣告。詳情請參閱內嵌自適應橫幅

探索其他主題