ネイティブ広告は、プラットフォームに備わっている 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 |
広告を読み込む
ネイティブ広告を読み込むには、NativeAdRequest
と NativeAdLoaderCallback
を受け取る 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
を処理する際に、受け取った NativeAd
に NativeAdEventCallback
を設定して、ネイティブ広告のライフサイクル イベントを受け取る関数を定義します。
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(ベータ版)の使用方法を示したサンプルアプリをダウンロードし、実行してください。