原生廣告是透過平台原生 UI 元件,向使用者顯示的廣告素材資源。這類廣告顯示時,會使用您建構版面配置時所用的檢視區塊類型,且能配合應用程式的視覺設計調整格式。
原生廣告載入時,應用程式會收到內含廣告素材的廣告物件,而且廣告素材是由應用程式 (而非 Google Mobile Ads SDK (Beta 版)) 顯示。
廣義來說,成功導入原生廣告須完成兩個步驟:首先使用 SDK 載入廣告,接著在應用程式中顯示廣告素材。
本頁說明如何使用 SDK 載入原生廣告。 提示:請參閱原生廣告教戰手冊,進一步瞭解相關資訊。
我們提供 Java 和 Kotlin 版範例。必要條件
- 完成入門指南的步驟。
- Google Mobile Ads SDK (Beta 版) 0.6.0-alpha01 以上版本。
一律使用測試廣告進行測試
建構及測試應用程式時,請務必使用測試廣告,而非實際的正式廣告。否則帳戶可能會遭到停權。
如要載入測試廣告,最簡單的方法是使用原生廣告專用的測試廣告單元 ID:
| 廣告格式 | 範例廣告單元 ID | 
|---|---|
| 原生 | ca-app-pub-3940256099942544/2247696110 | 
| 原生影片 | ca-app-pub-3940256099942544/1044960115 | 
載入廣告
如要載入原生廣告,請呼叫 NativeAdLoader.load() 方法,該方法會採用 NativeAdRequest 和 NativeAdLoaderCallback。
import com.google.android.libraries.ads.mobile.sdk.common.LoadAdError
import com.google.android.libraries.ads.mobile.sdk.nativead.NativeAd
import com.google.android.libraries.ads.mobile.sdk.nativead.NativeAdLoader
import com.google.android.libraries.ads.mobile.sdk.nativead.NativeAdLoaderCallback
import com.google.android.libraries.ads.mobile.sdk.nativead.NativeAdRequest
class NativeFragment : Fragment() {
  private var nativeAd: NativeAd? = null
  override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
    super.onViewCreated(view, savedInstanceState)
    loadAd()
  }
  private fun loadAd() {
    // Build an ad request with native ad options to customize the ad.
    val adRequest = NativeAdRequest
      .Builder(AD_UNIT_ID, listOf(NativeAd.NativeAdType.NATIVE))
      .build()
    val adCallback =
      object : NativeAdLoaderCallback {
        override fun onNativeAdLoaded(nativeAd: NativeAd) {
          // Called when a native ad has loaded.
        }
        override fun onAdFailedToLoad(adError: LoadAdError) {
          // Called when a native ad has failed to load.
        }
      }
    // Load the native ad with our request and callback.
    NativeAdLoader.load(adRequest, adCallback)
  }
  companion object {
    // Sample native ad unit ID.
    const val AD_UNIT_ID = "ca-app-pub-3940256099942544/2247696110"
  }
}
設定原生廣告事件回呼
處理 onNativeAdLoaded 時,請以 NativeAdEventCallback 設定收到的 NativeAd,並定義用於接收原生廣告生命週期事件的函式:
  nativeAd.adEventCallback =
    object : NativeAdEventCallback {
      override fun onAdShowedFullScreenContent() {
        // Native ad showed full screen content.
      }
      override fun onAdDismissedFullScreenContent() {
        // Native ad dismissed full screen content.
      }
      override fun onAdFailedToShowFullScreenContent {
        // Native ad failed to show full screen content.
      }
      override fun onAdImpression() {
        // Native ad recorded an impression.
      }
      override fun onAdClicked() {
        // Native ad recorded a click.
      }
    }
選用:載入多則廣告
如要載入多則廣告,可透過選用的 numberOfAds 參數呼叫 load()。
可設定的最大值為 5,代表廣告數量,Google Mobile Ads SDK (Beta 版) 傳回的廣告數量不一定是您指定的數量。
private fun loadAd() {
  // Build an ad request with native ad options to customize the ad.
  val adRequest = NativeAdRequest
    .Builder(AD_UNIT_ID, listOf(NativeAd.NativeAdType.NATIVE))
    .build()
  val adCallback =
    object : NativeAdLoaderCallback {
      override fun onNativeAdLoaded(nativeAd: NativeAd) {
        // Called when a native ad has loaded.
      }
      override fun onAdFailedToLoad(adError: LoadAdError) {
        // Called when a native ad has failed to load.
      }
      override fun onAdLoadingCompleted() {
        // Called when all native ads have loaded.
      }
    }
  // Load the native ad with our request and callback.
  NativeAdLoader.load(adRequest, 3, adCallback)
}
Google Mobile Ads SDK (Beta 版) 傳回的廣告不會重複,但預訂廣告空間或第三方買家的廣告有可能重複。
如果您使用中介服務,請勿呼叫 load() 方法。如果廣告單元 ID 已設定中介服務,則無法請求多則原生廣告。
最佳做法
載入廣告時,請遵守下列規則。
- 如果應用程式採用清單中的原生廣告,則應預先快取廣告清單。 
- 如有預先快取廣告,請清除快取,過一小時後再重新載入廣告。 
- 只快取需要的原生廣告。例如預先快取時,只快取要在螢幕上立即顯示的廣告。原生廣告的記憶體用量很大,如果快取後不刪除,會占用過多記憶體。 
- 不再使用原生廣告時,請將其刪除。 
影片廣告的硬體加速功能
為確保原生廣告檢視區塊的影片廣告順利顯示,請務必啟用硬體加速。
硬體加速功能預設為啟用,但部分應用程式可能會選擇停用。如果您的應用程式停用硬體加速,對於會使用廣告的 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>
請參閱硬體加速指南,進一步瞭解硬體加速的控管選項。請注意,如果停用 Activity 類別,就無法啟用個別廣告檢視區塊的硬體加速功能,因此須針對 Activity 啟用硬體加速。
顯示廣告
載入廣告後,接下來就只剩下向使用者顯示廣告。相關操作說明請參閱原生進階指南。
範例
請下載並執行範例應用程式,瞭解如何使用 Google Mobile Ads SDK (Beta 版)。