ネイティブ広告

ネイティブ広告は、プラットフォームに備わっている UI コンポーネントを通じてユーザーに表示される広告アセットです。作成済みのレイアウトになじむ形で表示されるのに加え、アプリのビジュアル デザインに合わせたフォーマットの調整が可能です。

ネイティブ広告が読み込まれる際は、アセットを含む広告オブジェクトをアプリが受け取り、Google Mobile Ads SDK(ベータ版)ではなくアプリがアセットの表示処理を実行します。

ネイティブ広告の実装を 2 つの段階に大きく分けると、SDK を使用して広告を読み込み、アプリにその広告コンテンツを表示するということになります。

このページでは、SDK を使用してネイティブ広告を読み込む方法について説明します。

前提条件

  • スタートガイドの手順を完了していること。
  • Google Mobile Ads SDK(ベータ版)0.6.0-alpha01 以降。

必ずテスト広告でテストする

アプリの開発とテストでは必ずテスト広告を使用し、配信中の実際の広告は使用しないでください。実際の広告を使用すると、アカウントが停止される可能性があります。

下記のネイティブ広告向けのテスト専用広告ユニット ID を使うと、テスト広告を簡単に読み込むことができます。

広告フォーマット サンプル広告ユニット ID
ネイティブ /21775744923/example/native
ネイティブ動画 /21775744923/example/native-video

広告を読み込む

ネイティブ広告を読み込むには、NativeAdRequestNativeAdLoaderCallback を受け取る NativeAdLoader.load() メソッドを呼び出します。

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 を処理する際に、受け取った NativeAdNativeAdEventCallback を設定して、ネイティブ広告のライフサイクル イベントを受け取る関数を定義します。

  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 に対して、複数のネイティブ広告をリクエストすることはできません。

ベスト プラクティス

広告を読み込む際は、次のルールに従ってください。

  • リストでネイティブ広告を使用するアプリは、広告のリストをプリキャッシュする必要があります。

  • 広告をプリキャッシュする場合は、1 時間後にキャッシュをクリアして再読み込みします。

  • ネイティブ広告のキャッシュ保存は必要なものだけに限定します。たとえば、プリキャッシュを行う場合は、画面にすぐに表示する広告のみをキャッシュに保存します。ネイティブ広告はメモリ使用量が大きいので、ネイティブ広告を破棄せずにキャッシュに保存すると、過剰にメモリを使用することになります。

  • ネイティブ広告が不要になったら破棄します。

動画広告のハードウェア アクセラレーション

ネイティブ広告で動画広告を正常に表示するには、ハードウェア アクセラレーションを有効にする必要があります。

ハードウェア アクセラレーションはデフォルトで有効になっていますが、一部のアプリでは無効にすることもできます。お客様のアプリで無効にできる場合、広告を使用するアクティビティ クラスのハードウェア アクセラレーションを有効にすることをおすすめします。

ハードウェア アクセラレーションの有効化

ハードウェア アクセラレーションをグローバルに有効にするとアプリが正しく動作しない場合は、個々のアクティビティでの設定が可能です。ハードウェア アクセラレーションを有効または無効にするには、AndroidManifest.xml<application> および <activity> 要素で android:hardwareAccelerated 属性を使用します。次の例では、アプリ全体でハードウェア アクセラレーションを有効にしつつ、1 つのアクティビティで無効にしています。

<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>

ハードウェア アクセラレーションを制御するオプションについて詳しくは、ハードウェア アクセラレーション ガイドをご覧ください。アクティビティが無効の場合、個々の広告ビューではハードウェア アクセラレーションを有効にできないため、アクティビティ自体でハードウェア アクセラレーションが有効になっている必要があります。

広告を表示する

広告を読み込んだら、あとは広告をユーザーに表示するだけです。方法は、ネイティブ アドバンスに関するガイドでご確認ください。

Google Mobile Ads SDK(ベータ版)の使用方法を示したサンプルアプリをダウンロードし、実行してください。