橫幅廣告佔據應用程式版面配置頂端或底部的位置,當使用者與應用程式互動時,畫面上將持續顯示在螢幕上,而且一段時間後會重新整理。如果您剛開始使用行動廣告,請先著手操作。 個案研究。
本指南說明如何將AdMob 的橫幅廣告整合至 Android 應用程式。除了程式碼片段和操作說明之外,它還包含如何適當調整橫幅大小及其他資源的連結。
必要條件
- 單獨匯入 Google Mobile Ads SDK,或做為 Firebase 的一部分。
新增至 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 換成自己的廣告單元 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 加速指南。請注意,如果「活動」已停用,就無法針對硬體加速啟用個別廣告瀏覽作業,因此「活動」本身必須啟用硬體加速功能。