分享您的意見,協助我們打造 Google Mobile Ads SDK 的藍圖。請在 2023 年 5 月 5 日以前完成 Google Mobile Ads SDK 2023 年年度問卷調查

橫幅廣告

透過集合功能整理內容 你可以依據偏好儲存及分類內容。

橫幅廣告佔用應用程式版面配置中,位於裝置螢幕的頂端或底部。當使用者與應用程式互動時,這些畫面會持續顯示在畫面上,而且可在一段時間後自動重新整理。如果是行動廣告新手,那麼非常適合著手使用。 個案研究

本指南說明如何將橫幅廣告從AdMob 整合至 Android 應用程式。除了程式碼片段和操作說明之外,它還包含如何適當調整橫幅大小及額外資源的連結。

必要條件

新增至 AdView 版面配置

顯示橫幅的第一步是將 AdView 放置在您要顯示橫幅廣告的 ActivityFragment 的版面配置中。最簡單的做法是在對應的 XML 版面配置檔案中新增一個。以下範例為活動的 AdView

# main_activity.xml
...
  <com.google.android.gms.ads.AdView
      xmlns:ads="http://schemas.android.com/apk/res-auto"
      android:id="@+id/adView"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_centerHorizontal="true"
      android:layout_alignParentBottom="true"
      ads:adSize="BANNER"
      ads:adUnitId="ca-app-pub-3940256099942544/6300978111">
  </com.google.android.gms.ads.AdView>
...

請注意以下必要屬性:

  • ads:adSize - 將廣告大小設為您要使用的廣告大小。如果您不想使用常數定義的標準大小,可以改為設定自訂大小。詳情請參閱下方的橫幅廣告大小一節
  • ads:adUnitId - 將這個 ID 設為在應用程式中要顯示廣告的廣告單元專屬 ID。如果您要在不同活動中顯示橫幅廣告,則每個廣告單元都需要廣告單元。

或者,您也可以透過程式化方式建立 AdView

Java

AdView adView = new AdView(this);

adView.setAdSize(AdSize.BANNER);

adView.setAdUnitId("ca-app-pub-3940256099942544/6300978111");
// TODO: Add adView to your view hierarchy.

Kotlin

val adView = AdView(this)

adView.adSize = AdSize.BANNER

adView.adUnitId = "ca-app-pub-3940256099942544/6300978111"
// TODO: Add adView to your view hierarchy.

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

建構及測試應用程式時,請務必使用測試廣告,而非即時正式版的廣告。否則我們可能會將您的帳戶停權。

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

ca-app-pub-3940256099942544/6300978111

它經過特別設定,可以針對每個請求傳回測試廣告,而且您可以在編寫、測試及偵錯時,在自己的應用程式中自由地使用它。發布之前,請務必以您自己的廣告單元 ID 取代它。

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

載入廣告

AdView 設定完成後,下一步就是載入廣告。方法是使用 AdView 類別中的 loadAd() 方法。它使用 AdRequest 參數,其中包含單一廣告請求的執行階段資訊 (例如指定目標資訊)。

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

MainActivity (摘錄)

Java

package ...

import ...
import com.google.android.gms.ads.AdRequest;
import com.google.android.gms.ads.AdView;

public class MainActivity extends AppCompatActivity {
    private AdView mAdView;

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        MobileAds.initialize(this, new OnInitializationCompleteListener() {
            @Override
            public void onInitializationComplete(InitializationStatus initializationStatus) {
            }
        });

        mAdView = findViewById(R.id.adView);
        AdRequest adRequest = new AdRequest.Builder().build();
        mAdView.loadAd(adRequest);
    }
}

Kotlin

package ...

import ...
import com.google.android.gms.ads.AdRequest
import com.google.android.gms.ads.AdView

class MainActivity : AppCompatActivity() {

    lateinit var mAdView : AdView

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        MobileAds.initialize(this) {}

        mAdView = findViewById(R.id.adView)
        val adRequest = AdRequest.Builder().build()
        mAdView.loadAd(adRequest)
    }
}

大功告成!您的應用程式現在可以顯示橫幅廣告了。

廣告事件

若要進一步自訂廣告行為,您可以在廣告生命週期中連結多個事件:載入、開啟、關閉等。您可以透過 AdListener 類別監聽這些事件。

如要將 AdListenerAdView 搭配使用,請呼叫 setAdListener() 方法:

Java

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

mAdView.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() 方法。

下表列出標準橫幅廣告大小。

大小 (dp (WxH)) 說明 提供洞察資料的層級 AdSize 常數
320 x 50 橫幅 手機和平板電腦 BANNER
320x100 大型橫幅廣告 手機和平板電腦 LARGE_BANNER
300 x 250 IAB 中矩形廣告 手機和平板電腦 MEDIUM_RECTANGLE
468x60 IAB 完整橫幅廣告 平板電腦 FULL_BANNER
728x90 IAB 排行榜 平板電腦 LEADERBOARD
提供的寬度 x 自動調整高度 自動調整橫幅廣告 手機和平板電腦
螢幕寬度 x 32|50|90 智慧型橫幅廣告 手機和平板電腦 SMART_BANNER
進一步瞭解自動調整橫幅廣告,以取代智慧型橫幅廣告

如要定義自訂橫幅大小,請設定所需的 AdSize,如下所示:

Java

AdSize adSize = new AdSize(300, 50);

Kotlin

val adSize = AdSize(300, 50)

影片廣告硬體加速

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

硬體加速功能預設為啟用,但部分應用程式可能會選擇停用。針對應用程式,建議您針對使用廣告的活動類別啟用硬體加速功能。

啟用硬體加速功能

如果應用程式在全域開啟硬體加速後無法正常運作,您也可以針對個別活動進行控管。如要啟用或停用硬體加速功能,您可以針對 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>

如要進一步瞭解控管硬體加速功能的選項,請參閱 HW 加速指南。請注意,如果「活動」已停用,就無法針對硬體加速啟用個別廣告瀏覽作業,因此「活動」本身必須啟用硬體加速功能。

其他資源

GitHub 範例

行動廣告學程影片教學課程

成功案例