橫幅廣告會佔用應用程式版面配置的一部分,位於裝置螢幕的頂端或底部。使用者與應用程式互動時,這類通知會持續出現在螢幕上,且可能會在一段時間後自動重新整理。如果您是行動廣告新手,可以從這些地方著手。 個案研究。
本指南將說明如何將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 替換它即可。
如要進一步瞭解 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)
}
}
如果廣告無法載入,您只需將廣告單元設定為重新整理,就不需要明確請求另一個廣告;Google Mobile Ads SDK 會遵循您在AdMob 網頁介面中指定的任何重新整理頻率,如果您尚未啟用重新整理功能,就需要發出新的要求。
大功告成!您的應用程式現在可以顯示橫幅廣告了。
廣告事件
如要進一步自訂廣告行為,您可以在廣告生命週期中連結幾個事件:載入、開啟、關閉等。您可以透過 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() 方法。 |
橫幅廣告大小
展示廣告的容器至少必須與橫幅一樣大。如果容器有邊框間距,就能有效縮小容器大小。如果容器不符合橫幅廣告的大小,系統就不會顯示橫幅,而您會在記錄檔中收到以下警告:
W/Ads: Not enough space to show ad. Needs 320x50 dp, but only has 288x495 dp.
下表列出標準橫幅廣告大小。
大小以 dp (寬 x 高) | 說明 | 服務提供狀況 | AdSize 常數 |
---|---|---|---|
320x50 | 橫幅廣告 | 手機和平板電腦 | 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)
影片廣告硬體加速
為了讓影片廣告順利在橫幅廣告檢視畫面中顯示,您必須啟用硬體加速功能。
硬體加速功能預設為啟用,但部分應用程式可能會選擇停用。如果符合上述情況,建議您為使用廣告的 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 上的範例
行動廣告車庫影片教學課程
成功案例
後續步驟
探索下列主題: