橫幅廣告會顯示在應用程式版面配置中的一個位置,例如在裝置螢幕的頂端或底部。當使用者與應用程式互動時,這類畫面會持續顯示,並在一段特定時間後自動重新整理。如果您不熟悉行動廣告,建議從下方著手。 個案研究。
本指南說明如何將AdMob 的橫幅廣告整合至 Android 應用程式。除了程式碼片段和操作說明以外,指南中也提供如何正確調整橫幅廣告大小和其他資源連結等資訊。
必要條件
- 完成入門指南。
在版面配置中新增 AdView
顯示橫幅的第一步,就是針對想要顯示 Activity
或 Fragment
的版面配置,將 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
參數,其中包含單一廣告請求的執行階段資訊 (例如指定目標資訊)。
以下範例說明如何在 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
類別監聽這些事件。
如要搭配 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 上的範例
行動廣告指南影片教學課程
成功案例
後續步驟
進一步瞭解使用者隱私。