橫幅廣告

橫幅廣告會顯示在應用程式版面配置中的一個位置,例如在裝置螢幕的頂端或底部。當使用者與應用程式互動時,這類畫面會持續顯示,並在一段特定時間後自動重新整理。如果您不熟悉行動廣告,建議從下方著手。 個案研究

本指南說明如何將AdMob 的橫幅廣告整合至 Android 應用程式。除了程式碼片段和操作說明以外,指南中也提供如何正確調整橫幅廣告大小和其他資源連結等資訊。

必要條件

在版面配置中新增 AdView

顯示橫幅的第一步,就是針對想要顯示 ActivityFragment 的版面配置,將 AdView 放置在版面配置中。最簡單的做法是在對應的 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。如果在不同活動中顯示橫幅廣告,每個廣告單元都必須有一個廣告單元。

您也可以透過程式輔助方式建立 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 換成您自己的廣告單元 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 類別監聽這些事件。

如要搭配 AdView 使用 AdListener,請呼叫 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 上的範例

  • 橫幅廣告範例:Java | Kotlin

  • 進階功能示範:Java | Kotlin

  • 橫幅廣告 RecyclerView 範例應用程式:Java

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

成功案例

後續步驟

進一步瞭解使用者隱私