原生廣告

原生廣告是透過平台原生的 UI 元件向使用者呈現的廣告素材資源。這些訊息會以您用來建立版面配置的相同類型檢視畫面顯示,並可配合應用程式的視覺設計進行格式設定。

原生廣告載入時,應用程式會收到包含資產的廣告物件,然後由應用程式 (而非 Google Mobile Ads SDK) 負責顯示這些資產。

大致來說,成功導入原生廣告需要兩個步驟:使用 SDK 載入廣告,然後在應用程式中顯示廣告內容。

本頁面說明如何使用 SDK 載入原生廣告

必要條件

  • 完成入門指南
  • Google Mobile Ads NextGen SDK 0.6.0-alpha01 以上版本。

一律使用測試廣告進行測試

建構及測試應用程式時,請務必使用測試廣告,而非實際的正式版廣告。否則可能導致帳戶遭到停權。

如要載入測試廣告,最簡單的方法是使用原生廣告專用的測試廣告單元 ID:

廣告格式 廣告單元 ID 範例
原生 /21775744923/example/native
原生影片 /21775744923/example/native-video

載入廣告

如要載入原生廣告,請呼叫 NativeAdLoader.load() 方法,該方法會接受 NativeAdRequestNativeAdLoaderCallback

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 = "/21775744923/example/native"
  }
}

設定原生廣告事件回呼

處理 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 可能不會傳回您要求的確切廣告數量。

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 傳回的廣告都是獨特的,但預留廣告空間或第三方買家提供的廣告可能不是獨特的。

如果您使用中介服務,請勿呼叫 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>

如要進一步瞭解控制硬體加速功能的選項,請參閱硬體加速指南。請注意,如果活動已停用,則無法為個別廣告檢視畫面啟用硬體加速功能,因此活動本身必須啟用硬體加速功能。

顯示廣告

載入廣告後,您只需向使用者顯示廣告即可。 請參閱原生進階指南,瞭解如何操作。

範例

下載並執行範例應用程式,瞭解如何使用 Next Gen Google Mobile Ads SDK。