ネイティブ広告は、プラットフォームに備わっている UI コンポーネントを通じてユーザーに表示される広告アセットです。作成済みのレイアウトになじむ形で表示されるのに加え、アプリのビジュアル デザインに合わせたフォーマットの調整が可能です。
ネイティブ広告が読み込まれる際は、アプリがその広告のアセットを含むオブジェクトを受け取り、(GMA Next Gen SDK ではなく)アプリがそのアセットの表示を処理します。
ネイティブ広告の実装を 2 つの段階に大きく分けると、SDK を使用して広告を読み込み、アプリにその広告コンテンツを表示するということになります。
このページでは、SDK を使用してネイティブ広告を読み込む方法について説明します。 ヒント: ネイティブ広告の詳細については、ネイティブ広告ハンドブックをご覧ください。
Java と Kotlin のサンプルをご利用いただけます。成功事例も併せてご覧ください(事例紹介 1 / 事例紹介 2)。
前提条件
- スタートガイドの手順を完了していること
- GMA Next Gen SDK 0.6.0-alpha01 以降。
必ずテスト広告でテストする
アプリの開発とテストでは必ずテスト広告を使用し、配信中の実際の広告は使用しないでください。実際の広告を使用すると、アカウントが停止される可能性があります。
下記のネイティブ広告向けのテスト専用広告ユニット ID を使うと、テスト広告を簡単に読み込むことができます。
| 広告フォーマット | サンプル広告ユニット ID |
|---|---|
| ネイティブ | ca-app-pub-3940256099942544/2247696110 |
| ネイティブ動画 | ca-app-pub-3940256099942544/1044960115 |
広告を読み込む
ネイティブ広告を読み込むには、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 = "ca-app-pub-3940256099942544/2247696110"
}
}
ネイティブ広告イベントのコールバックを設定する
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 です。これは広告の数を表します。GMA Next Gen 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)
}
GMA Next Gen 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>
ハードウェア アクセラレーションを制御するオプションについて詳しくは、ハードウェア アクセラレーション ガイドをご覧ください。アクティビティが無効の場合、個々の広告ビューではハードウェア アクセラレーションを有効にできないため、アクティビティ自体でハードウェア アクセラレーションが有効になっている必要があります。
広告を表示する
広告を読み込んだら、あとは広告をユーザーに表示するだけです。方法は、ネイティブ アドバンスに関するガイドでご確認ください。
例
GMA Next Gen SDK の使用方法を示したサンプルアプリをダウンロードし、実行してください。