原生廣告是一種透過 UI 元件向使用者顯示的廣告素材資源 這是平台的原生功能我們會使用與 您打算建立版面配置,而且格式必須符合您的 應用程式的視覺設計
原生廣告載入時,應用程式會收到內含其素材資源的廣告物件。 和應用程式 (而非 Google Mobile Ads SDK) 是 。
廣泛來說,成功導入原生廣告的方法如下: 使用 SDK 載入廣告,然後在應用程式中顯示廣告素材。
本頁說明如何使用 SDK 載入 原生廣告。 提示:如要進一步瞭解原生廣告,請參閱原生廣告 教戰手冊。
你也可以查看一些客戶成功案例: 個案研究 1, 個案研究 2。
必要條件
- 完成入門指南。
一律使用測試廣告進行測試
建構及測試應用程式時,請務必使用測試廣告,而非 現場及正式環境廣告
要載入測試廣告,最簡單的方法就是使用專屬測試廣告單元編號 原生廣告格式
ca-app-pub-3940256099942544/2247696110
這是經過特別設定,每次請求都會傳回測試廣告。 並在程式設計、測試和偵錯時用於自己的應用程式。只要確定 請先改用您自己的廣告單元 ID,再發布應用程式。
若要進一步瞭解 Google Mobile Ads SDK 測試廣告的運作方式,請參閱: 測試廣告。
載入廣告
原生廣告會與
AdLoader
類別,
有專屬的
Builder
類別,在建立期間自訂圖片。將事件監聽器新增至 AdLoader
建立應用程式時,應用程式會指定目前可用的原生廣告類型
接收。接著,AdLoader
只會要求這些類型。
建立 AdLoader
以下程式碼示範如何建構可載入原生的 AdLoader
廣告:
Java
AdLoader adLoader = new AdLoader.Builder(context, "ca-app-pub-3940256099942544/2247696110")
.forNativeAd(new NativeAd.OnNativeAdLoadedListener() {
@Override
public void onNativeAdLoaded(NativeAd nativeAd) {
// Show the ad.
}
})
.withAdListener(new AdListener() {
@Override
public void onAdFailedToLoad(LoadAdError adError) {
// Handle the failure by logging, altering the UI, and so on.
}
})
.withNativeAdOptions(new NativeAdOptions.Builder()
// Methods in the NativeAdOptions.Builder class can be
// used here to specify individual options settings.
.build())
.build();
Kotlin
val adLoader = AdLoader.Builder(this, "ca-app-pub-3940256099942544/2247696110}")
.forNativeAd { ad : NativeAd ->
// Show the ad.
}
.withAdListener(object : AdListener() {
override fun onAdFailedToLoad(adError: LoadAdError) {
// Handle the failure.
}
})
.withNativeAdOptions(NativeAdOptions.Builder()
// Methods in the NativeAdOptions.Builder class can be
// used here to specify individual options settings.
.build())
.build()
forNativeAd()
敬上
方法負責為 NativeAd
格式準備 AdLoader
。
廣告成功載入後,事件監聽器物件的 onNativeAdLoaded()
方法。
使用 AdLoader 設定 AdListener (選用)
建立 AdLoader
時,
withAdListener
函式會設定一個
AdListener
的
。該方法使用 AdListener
做為其本身的參數,並接收
廣告生命週期事件發生時,來自 AdLoader
的回呼:
Java
.withAdListener(new AdListener() {
// AdListener callbacks can be overridden here.
})
Kotlin
.withAdListener(object : AdListener() {
// AdListener callbacks can be overridden here.
})
請求廣告
建立 AdLoader
後,即可用它來請求廣告。
方法有兩種:loadAd()
和 loadAds()
。
loadAd()
這個方法會傳送單一廣告的請求。
Java
adLoader.loadAd(new AdRequest.Builder().build());
Kotlin
adLoader.loadAd(AdRequest.Builder().build())
loadAds()
這個方法會傳送多個廣告的請求 (最多五個):
Java
adLoader.loadAds(new AdRequest.Builder().build(), 3);
Kotlin
adLoader.loadAds(AdRequest.Builder().build(), 3)
這兩種方法
AdRequest
敬上
做為第一個參數原來是
橫幅廣告和插頁式廣告使用的 AdRequest
類別。
此外,您也可以使用 AdRequest
類別的方法
加入指定目標資訊,就像
其他廣告格式
載入多個廣告 (選用)
loadAds()
方法需要一個額外參數:SDK 的廣告數量
的回呼方法。這個數字上限為五,且 SDK 不會保證會傳回您要求的確切廣告數量。
雖然傳回的 Google 廣告各不相同,但來自 預訂廣告空間或第三方買方不保證不會重複。
如果您採用中介服務,請勿使用 loadAds()
方法做為
多個原生廣告目前無法使用
中介服務狀態。
回呼
呼叫 loadAd()
後,系統會對先前定義的單一回呼
事件監聽器方法來放送原生廣告物件或回報錯誤。
呼叫 loadAds()
後,系統會發出多個這類回呼 (至少一項、
上限則不得超過請求的廣告數量)。請求多則廣告的應用程式
應在回呼實作中呼叫 AdLoader.isLoading()
,以便
判斷載入程序是否已完成。
以下範例說明如何檢查isLoading()
onNativeAdLoaded()
回呼:
Java
final AdLoader adLoader = new AdLoader.Builder(this, "ca-app-pub-3940256099942544/2247696110")
.forNativeAd(new NativeAd.OnNativeAdLoadedListener() {
@Override
public void onNativeAdLoaded(NativeAd nativeAd) {
...
// some code that displays the ad.
...
if (adLoader.isLoading()) {
// The AdLoader is still loading ads.
// Expect more adLoaded or onAdFailedToLoad callbacks.
} else {
// The AdLoader has finished loading ads.
}
}
}).build();
adLoader.loadAds(new AdRequest.Builder().build(), 3);
Kotlin
lateinit var adLoader: AdLoader
...
adLoader = AdLoader.Builder(this, "ca-app-pub-3940256099942544/2247696110")
.forNativeAd {
...
// some code that displays the ad.
...
if (adLoader.isLoading) {
// The AdLoader is still loading ads.
// Expect more adLoaded or onAdFailedToLoad callbacks.
} else {
// The AdLoader has finished loading ads.
}
}.build()
adLoader.loadAds(AdRequest.Builder().build(), 3)
釋出資源
請務必對已載入的原生廣告使用 destroy()
方法。這個版本
並避免記憶體流失
確保活動的 NativeAd
參照均已刪除
onDestroy()
方法。
在 onNativeAdLoaded
回呼中,請務必刪除所有現有
排除參照的原生廣告
另一項重要檢查是,活動是否刪除。如果已刪除,請在上面呼叫 destroy()
。
並立即傳回:
Java
final AdLoader adLoader = new AdLoader.Builder(this, "ca-app-pub-3940256099942544/2247696110")
.forNativeAd(new NativeAd.OnNativeAdLoadedListener() {
@Override
public void onNativeAdLoaded(NativeAd nativeAd) {
// If this callback occurs after the activity is destroyed, you
// must call destroy and return or you may get a memory leak.
// Note `isDestroyed()` is a method on Activity.
if (isDestroyed()) {
nativeAd.destroy();
return;
}
...
}
}).build();
Kotlin
lateinit var adLoader: AdLoader
...
adLoader = AdLoader.Builder(this, "ca-app-pub-3940256099942544/2247696110")
.forNativeAd { nativeAd ->
// If this callback occurs after the activity is destroyed, you
// must call destroy and return or you may get a memory leak.
// Note `isDestroyed` is a method on Activity.
if (isDestroyed) {
nativeAd.destroy()
return@forNativeAd
}
...
}.build()
最佳做法
載入廣告時,請遵守這些規則。
在清單中使用原生廣告的應用程式,應預先快取廣告清單。
預先快取廣告時,請清除快取,並在一小時後重新載入。
不要呼叫
loadAd()
或AdLoader
上loadAds()
到第一個 要求完成載入
影片廣告的硬體加速
為了讓影片廣告在原生廣告檢視畫面中順利顯示, 硬體 加速 都必須啟用。
硬體加速功能預設為啟用,但部分應用程式可能會選擇 並停用該功能如果您的應用程式有此情況,建議您啟用硬體 使用廣告的活動類別加速。
啟用硬體加速
如果開啟硬體加速功能時,應用程式無法正常運作
也可以控制個別活動的位置。如要啟用或
停用硬體加速功能,請使用 android:hardwareAccelerated
屬性
的
<application>
和
<activity>
AndroidManifest.xml
中的元素。以下示範為整個應用程式啟用硬體加速,但針對一項活動停用此功能:
<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>
請參閱硬體加速 指南 進一步瞭解控制硬體加速的選項。注意事項 某些廣告檢視畫面就無法啟用硬體加速功能 活動已停用,因此「活動」本身必須具有硬體加速功能
顯示您的廣告
廣告載入完畢後,剩下的部分就是向使用者顯示。 前往我們的原生進階廣告課程 指南。