橫幅廣告是會佔用應用程式的部分版面的矩形廣告。使用者與應用程式互動時,這類廣告會固定顯示在畫面頂端或底部,或在使用者捲動瀏覽內容時,持續顯示在畫面上。橫幅廣告經過一段時間後會自動重新整理。詳情請參閱 橫幅廣告總覽。
本指南將說明如何開始使用 錨定自動調整橫幅廣告。這個做法會使用您指定的廣告寬度,針對每部裝置最佳化廣告大小,盡可能提高成效。
錨定自動調整橫幅廣告是固定的顯示比例廣告,而非一般的固定大小廣告。長寬比與 320x50 的業界標準相似。指定可用的完整寬度後,系統會傳回高度調整為該寬度的廣告。在同一部裝置上提出要求時,最佳高度不會改變,而在重新整理廣告時,周圍的檢視畫面也不需要移動。
先備知識
- 完成入門指南。
一律使用測試廣告進行測試
建構及測試應用程式時,請務必使用測試廣告,而非即時的實際廣告。否則可能導致帳戶遭到停權。
要載入測試廣告,最簡單的方法就是使用 Android 橫幅廣告的專屬測試廣告單元 ID:
ca-app-pub-3940256099942544/9214589741
這是經過特別設定,可針對每個請求傳回測試廣告,方便您在編寫程式碼、測試及偵錯時用於自家的應用程式。發布應用程式之前,請務必用自己的廣告單元 ID 取代這個 ID。
如要進一步瞭解 Mobile Ads SDK 測試廣告的運作方式,請參閱「測試廣告」一文。
將 AdView 新增至版面配置
顯示橫幅的第一步,是將 AdView
放在要顯示橫幅的 Activity
或 Fragment
版面配置中:
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
參數,保留關於單一廣告請求的執行階段資訊,例如指定目標資訊。
以下範例說明如何在 Activity
的 onCreate()
方法中載入廣告:
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() 方法。您的應用程式可以使用此方法恢復已暫停的活動,或執行其他必要工作,準備好進行互動。
如要瞭解如何在 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 上的範例
後續步驟
可收合橫幅廣告
可收合橫幅廣告是一種橫幅廣告,一開始會以較大的重疊廣告呈現,並提供可將廣告收合至較小尺寸的按鈕。建議您運用它進一步最佳化效能。詳情請參閱「可收合橫幅廣告」一文。
內嵌自動調整橫幅廣告
與錨定自動調整橫幅廣告相比,內嵌自動調整橫幅廣告尺寸更大、更高。它們的高度不一,而且可以和裝置螢幕一樣高。如果應用程式會在可捲動內容中刊登橫幅廣告,建議使用內嵌自動調整橫幅廣告,而非錨定式自動調整橫幅廣告。詳情請參閱內嵌自動調整橫幅廣告。