ネイティブ広告には、追加のカスタマイズを行い、広告エクスペリエンスを最大限に高めるための高度な機能が多数用意されています。このガイドでは、ネイティブ広告の高度な機能の使用方法について説明します。
前提条件
- ネイティブ広告フォーマットを統合していること
アセット コントロール
このセクションでは、ネイティブ広告のクリエイティブ アセットをカスタマイズする方法について詳しく説明します。メディア アセットの優先アスペクト比と、画像アセットのダウンロードと表示の方法を指定できます。
優先するメディア アスペクト比のコントロール
メディア アスペクト比のコントロールを使うと、広告クリエイティブに希望するアスペクト比を指定できます。
NativeAd.NativeMediaAspectRatio
値を指定して NativeAdRequest.Builder.setMediaAspectRatio()
を呼び出します。
値が設定されていない場合、返される広告では任意のメディア アスペクト比が適用されます。
値が設定されている場合、アスペクト比の優先タイプを指定してユーザー エクスペリエンスを改善できます。
次の例では、特定のアスペクト比の画像または動画を優先して返すよう SDK に指示しています。
Kotlin
val adRequest = NativeAdRequest.Builder(
"ca-app-pub-3940256099942544/2247696110",
listOf(NativeAd.NativeAdType.NATIVE))
.setMediaAspectRatio(NativeAd.NATIVE_MEDIA_ASPECT_RATIO_LANDSCAPE)
.build()
Java
NativeAdRequest adRequest = new NativeAdRequest.Builder(
"ca-app-pub-3940256099942544/2247696110",
List.of(NativeAd.NativeAdType.NATIVE))
.setMediaAspectRatio(NativeAd.NATIVE_MEDIA_ASPECT_RATIO_LANDSCAPE)
.build();
画像ダウンロードのコントロール
画像ダウンロードのコントロールを使うと、SDK から画像アセットを返すか、URI のみを返すかを指定できます。
NativeAdRequest.Builder.disableImageDownloading()
を呼び出します。
画像ダウンロードのコントロールは、デフォルトでは無効になっています。
無効になっている場合、Google Mobile Ads SDK(ベータ版)により画像と URI の両方に値が入力されます。
有効になっている場合、SDK によって URI だけに値が入力されるため、実際の画像はご自身の判断でダウンロードできます。
次の例では、URI のみを返すよう SDK に指示しています。
Kotlin
val adRequest = NativeAdRequest.Builder(
"ca-app-pub-3940256099942544/2247696110",
listOf(NativeAd.NativeAdType.NATIVE))
.setMediaAspectRatio(NativeAd.NATIVE_MEDIA_ASPECT_RATIO_LANDSCAPE)
.disableImageDownloading()
.build()
val adCallback: NativeAdLoaderCallback =
object : NativeAdLoaderCallback {
override fun onNativeAdLoaded(nativeAd: NativeAd) {
// Get the image uri.
val imageUri = nativeAd.image?.uri
}
};
// Load the native ad with the ad request and callback.
NativeAdLoader.load(adRequest, adLoaderCallback);
Java
NativeAdRequest adRequest = new NativeAdRequest.Builder(
"ca-app-pub-3940256099942544/2247696110",
List.of(NativeAd.NativeAdType.NATIVE))
.disableImageDownloading()
.build();
NativeAdLoaderCallback adLoaderCallback =
new NativeAdLoaderCallback() {
@Override
public void onNativeAdLoaded(@NonNull NativeAd nativeAd) {
// Get the image uri.
Uri imageUri = nativeAd.getImage().getUri();
}
};
// Load the native ad with the ad request and callback.
NativeAdLoader.load(adRequest, adLoaderCallback);
画像ペイロードのコントロール
広告によっては、画像が 1 つだけでなく複数含まれている場合があります。この機能では、アプリですべての画像を表示するか、1 つの画像のみを表示するかを指定します。
画像ペイロードのコントロールはデフォルトでは無効になっています。
無効になっている場合、複数の画像を含むアセットでは、最初の画像だけを返すようにアプリから SDK に指示することになります。
有効になっている場合、複数の画像を含むアセットについて、そのすべての画像を表示できることをアプリで指定します。
次の例では、複数の画像アセットを返すように SDK に指示しています。
AdChoices プレースメント
このセクションでは、AdChoices オーバーレイの配置方法について詳しく説明します。配置を 4 つの隅のいずれかに設定するか、カスタムビュー内に表示するかを選択できます。
AdChoices の位置のコントロール
AdChoices の位置のコントロールを使うと、四隅のどこに AdChoices アイコンを表示するかを選択できます。
NativeAdRequest.AdChoicesPlacement
値を指定して NativeAdRequest.Builder.setAdChoicesPlacement()
を呼び出します。
設定されていない場合、AdChoices アイコンは右上に配置されます。
設定されている場合、AdChoices はリクエストされたカスタム位置に配置されます。
次の例は、AdChoices 画像のカスタム位置を設定する方法を示しています。
Kotlin
val adRequest = NativeAdRequest.Builder(
"ca-app-pub-3940256099942544/2247696110",
listOf(NativeAd.NativeAdType.NATIVE))
.setAdChoicesPlacement(NativeAdOptions.ADCHOICES_BOTTOM_RIGHT)
.build()
Java
NativeAdRequest adRequest = new NativeAdRequest.Builder(
"ca-app-pub-3940256099942544/2247696110",
List.of(NativeAd.NativeAdType.NATIVE))
.setAdChoicesPlacement(NativeAdOptions.ADCHOICES_BOTTOM_RIGHT)
.build();
AdChoices カスタムビュー
AdChoices カスタムビュー機能を使うと、AdChoices アイコンを選択した場所に配置できます。これは、四隅のいずれか 1 つだけを指定できる AdChoices の位置のコントロールとは異なります。
AdChoicesView
値を指定して NativeAdView.setAdChoicesView()
を呼び出します。
次の例は、AdChoices アイコンを AdChoicesView
内にレンダリングするカスタム AdChoices ビューの設定方法を示しています。
Kotlin
override fun onNativeAdLoaded(nativeAd: NativeAd) {
val nativeAdView = NativeAdView(applicationContext)
val adChoicesView = AdChoicesView(this)
nativeAdView.adChoicesView = adChoicesView
}
Java
public void onNativeAdLoaded(@NonNull NativeAd nativeAd) {
NativeAdView nativeAdView = new NativeAdView(getApplicationContext());
AdChoicesView adChoicesView = new AdChoicesView(this);
nativeAdView.setAdChoicesView(adChoicesView);
}
動画をコントロールする
このセクションでは、動画広告の再生をカスタマイズする方法について詳しく説明します。初期ミュート状態を設定し、カスタム再生コントロールを実装することができます。
ミュート動作の開始
ミュート動作の開始では、動画の開始時の音声を無効または有効にできます。
boolean
値を指定して VideoOptions.Builder.setStartMuted()
を呼び出し、NativeAdOptions.Builder.setVideoOptions()
を呼び出します。
開始時のミュートは、デフォルトで有効になっています。
無効になっている場合、アプリは動画を音声付きで開始するようリクエストします。
有効になっている場合、アプリは動画をミュート状態で開始するようリクエストします。
次の例は、ミュートされていない音声付きで動画を開始する方法を示しています。
Kotlin
val videoOptions = VideoOptions.Builder()
.setStartMuted(false)
.build()
val adRequest = NativeAdRequest.Builder(
"ca-app-pub-3940256099942544/2247696110",
listOf(NativeAd.NativeAdType.NATIVE))
.setVideoOptions(videoOptions)
.build()
Java
VideoOptions videoOptions = VideoOptions.Builder()
.setStartMuted(false)
.build()
NativeAdRequest adRequest = new NativeAdRequest.Builder(
"ca-app-pub-3940256099942544/2247696110",
List.of(NativeAd.NativeAdType.NATIVE))
.setVideoOptions(videoOptions)
.build()
カスタム再生コントロール
この機能では、動画の再生、一時停止、ミュートを行うカスタム動画入力のコントロールをリクエストできます。
広告の開始時のミュート状態を設定するには、VideoOptions.Builder.setCustomControlsRequested()
を呼び出します。
カスタム再生コントロールはデフォルトでは無効になっています。
無効になっている場合、動画に SDK でレンダリングされた入力コントロールが表示されます。
広告に動画コンテンツが含まれていて、カスタム コントロールが有効になっている場合は、広告自体にはコントロールが表示されないため、広告とともにカスタム コントロールを表示する必要があります。こうすることで、コントロールは
VideoOptions.Builder.setCustomControlsRequested()
。
次の例は、カスタム再生コントロールを使用して動画をリクエストする方法を示しています。
Kotlin
val videoOptions: VideoOptions.Builder()
.setCustomControlsRequested(true)
.build()
val adRequest = new NativeAdRequest.Builder(
"ca-app-pub-3940256099942544/2247696110",
listOf(NativeAd.NativeAdType.NATIVE))
.setVideoOptions(videoOptions)
.build()
Java
VideoOptions VideoOptions = VideoOptions.Builder()
.setCustomControlsRequested(true)
.build()
NativeAdRequest adRequest = new NativeAdRequest.Builder(
"ca-app-pub-3940256099942544/2247696110",
List.of(NativeAd.NativeAdType.NATIVE))
.setVideoOptions(videoOptions)
.build()
カスタム コントロールが有効になっているかどうかを確認する
返される広告でカスタム動画コントロールが許可されるかどうかはリクエスト時にわからないため、カスタム コントロールが有効になっているかどうかを確認する必要があります。
Kotlin
val adCallback: NativeAdLoaderCallback =
object : NativeAdLoaderCallback {
override fun onNativeAdLoaded(nativeAd: NativeAd) {
val mediaContent = nativeAd.mediaContent;
if (mediaContent != null) {
val videoController = mediaContent.videoController;
val canShowCustomControls = videoController?.isCustomControlsEnabled();
}
}
};
Java
NativeAdLoaderCallback adCallback =
new NativeAdLoaderCallback() {
@Override
public void onNativeAdLoaded(@NonNull NativeAd nativeAd) {
MediaContent mediaContent = nativeAd.getMediaContent();
if (mediaContent != null) {
VideoController videoController = mediaContent.getVideoController();
if (videoController != null) {
boolean canShowCustomControls = videoController.isCustomControlsEnabled();
}
}
}
};
カスタム動画コントロールをレンダリングする
次のベスト プラクティスに沿って、カスタム動画コントロールをレンダリングします。
- カスタム コントロール ビューをネイティブ広告ビューの子としてレンダリングします。このアプローチにより、Open Measurement の視認性の算出時に、カスタム コントロールが好ましい被覆物として考慮されます。
- メディアビュー全体に非表示のオーバーレイをレンダリングしないようにします。オーバーレイはメディアビューのクリックをブロックするため、ネイティブ広告のパフォーマンスに悪影響を与えます。代わりに、コントロールを収めるのに最低限必要なサイズの小さなオーバーレイを作成してください。
カスタム クリック操作
カスタム クリック操作は、広告ビューでのスワイプを広告クリックとして登録できるようにするネイティブ広告の機能で、コンテンツのナビゲーションにスワイプ操作を使用するアプリで動作するように設計されています。このガイドでは、ネイティブ広告でカスタム クリック操作を有効にする方法について説明します。
NativeAd.SwipeGestureDirection
と boolean
の値を指定して NativeAdRequest.Builder.enableCustomClickGestureDirection()
を呼び出します。
次の例では、右へのカスタム スワイプ操作を実装し、通常のタブの動作を維持しています。
カスタム クリック操作はデフォルトでは無効になっています。
無効になっている場合、アプリでは通常のクリック動作がサポートされます。
有効になっている場合、アプリではカスタム スワイプ操作がサポートされます。
次の例では、右へのカスタム スワイプ操作を実装し、通常のタブの動作を維持しています。
Kotlin
val adOptions = NativeAdOptions
.Builder()
.enableCustomClickGestureDirection(
/* swipeDirection */ NativeAdOptions.SWIPE_GESTURE_DIRECTION_RIGHT,
/* tapsAllowed= */ true)
.build();
// The following sample ad unit ID has been enabled for custom click gestures
// and can be used for testing.
val adRequest = NativeAdRequest.Builder(
"ca-app-pub-3940256099942544/2247696110",
listOf(NativeAd.NativeAdType.NATIVE))
.withNativeAdOptions(adOptions)
.build();
Java
NativeAdOptions adOptions = new NativeAdOptions
.Builder()
.enableCustomClickGestureDirection(
/* swipeDirection */ NativeAdOptions.SWIPE_GESTURE_DIRECTION_RIGHT,
/* tapsAllowed= */ true)
.build();
// The following sample ad unit ID has been enabled for custom click gestures
// and can be used for testing.
NativeAdRequest adRequest = new NativeAdRequest.Builder(
"ca-app-pub-3940256099942544/2247696110",
List.of(NativeAd.NativeAdType.NATIVE))
.withNativeAdOptions(adOptions)
.build();
スワイプ操作イベントをリッスンする
スワイプ操作イベントをリッスンするには、NativeAdEventCallback
を使用して NativeAd.setAdEventCallback()
を呼び出し、onAdSwipeGestureClicked()
メソッドを実装します。
Kotlin
val adCallback: NativeAdLoaderCallback =
object : NativeAdLoaderCallback {
override fun onNativeAdLoaded(nativeAd: NativeAd) {
// Implement the onAdSwipeGestureClicked() method.
val nativeAdCallback: NativeAdEventCallback = object : NativeAdEventCallback {
override fun onAdSwipeGestureClicked() {
// A swipe gesture click has occurred.
}
}
}
}
// Load the native ad with the ad request and callback.
NativeAdLoader.load(adRequest, adCallback)
Java
NativeAdLoaderCallback adCallback =
new NativeAdLoaderCallback() {
@Override
public void onNativeAdLoaded(@NonNull NativeAd nativeAd) {
// Implement the onAdSwipeGestureClicked() method.
NativeAdEventCallback nativeAdCallback = new NativeAdEventCallback() {
@Override
public void onAdSwipeGestureClicked() {
// A swipe gesture click has occurred.
}
};
}
};
// Load the native ad with the ad request and callback.
NativeAdLoader.load(adRequest, adCallback);
メディエーション
カスタム クリック操作は、Google Mobile Ads SDK がレンダリングするネイティブ広告でのみ機能します。レンダリングに第三者 SDK を必要とする広告ソースは、カスタム クリックの方向の設定に応答しません。