原生廣告是一種透過 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 的廣告數量
的回呼方法。這個數量上限為 5 個
無法保證 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>
請參閱硬體加速 指南 進一步瞭解控制硬體加速的選項。注意事項 某些廣告檢視畫面就無法啟用硬體加速功能 活動已停用,因此「活動」本身必須具有硬體加速功能
顯示您的廣告
廣告載入完畢後,剩下的部分就是向使用者顯示。 前往我們的原生進階廣告課程 指南。