橫幅廣告佔用應用程式版面配置中,位於裝置螢幕的頂端或底部。當使用者與應用程式互動時,這些畫面會持續顯示在畫面上,而且可在一段時間後自動重新整理。如果是行動廣告新手,那麼非常適合著手使用。 個案研究。
本指南說明如何將橫幅廣告從AdMob 整合至 Android 應用程式。除了程式碼片段和操作說明之外,它還包含如何適當調整橫幅大小及額外資源的連結。
必要條件
- 完成入門指南。
新增至 AdView 版面配置
顯示橫幅的第一步是將 AdView
放置在您要顯示橫幅廣告的 Activity
或 Fragment
的版面配置中。最簡單的做法是在對應的 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
參數,其中包含單一廣告請求的執行階段資訊 (例如指定目標資訊)。
以下範例說明如何在 Activity
的 onCreate()
方法中載入廣告:
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
類別監聽這些事件。
如要將 AdListener
與 AdView
搭配使用,請呼叫 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 加速指南。請注意,如果「活動」已停用,就無法針對硬體加速啟用個別廣告瀏覽作業,因此「活動」本身必須啟用硬體加速功能。