ネイティブ広告には、追加のカスタマイズを可能にし、最適な広告エクスペリエンスを実現する高度な機能が多数用意されています。このガイドでは、ネイティブ広告の高度な機能の使用方法について説明します。
前提条件
- ネイティブ広告フォーマットを統合していること
アセット管理
優先するメディアのアスペクト比のコントロール
メディアのアスペクト比コントロールを使用すると、広告クリエイティブのアスペクト比の設定を指定できます。
NativeAdOptions.MediaAspectRatio
値を指定して NativeAdOptions.Builder.setMediaAspectRatio()
を呼び出します。
未設定の場合、返される広告のメディアのアスペクト比は任意です。
設定すると、希望するアスペクト比のタイプを指定してユーザー エクスペリエンスを改善できます。
次の例では、特定のアスペクト比の画像または動画を優先して返すように SDK に指示します。
NativeAdOptions nativeAdOptions = new NativeAdOptions.Builder()
.setMediaAspectRatio(NativeAdOptions.NATIVE_MEDIA_ASPECT_RATIO_LANDSCAPE)
.build();
AdLoader loader = new AdLoader.Builder(this, '/21775744923/example/native')
.withNativeAdOptions(nativeAdOptions)
.build();
画像のダウンロードの制御
画像のダウンロード制御では、SDK から画像アセットが返されるか、URI のみが返されるかを指定できます。
boolean
値を指定して NativeAdOptions.Builder.setReturnUrlsForImageAssets()
を呼び出します。画像のダウンロード制御はデフォルトで無効になっています。
無効にすると、Google Mobile Ads SDK が画像と URI の両方を入力します。
有効にすると、SDK は URI のみを入力するため、実際の画像はご自身の判断でダウンロードできます。
次の例では、URI のみを返すように SDK に指示します。
NativeAdOptions nativeAdOptions = new NativeAdOptions.Builder()
.setReturnUrlsForImageAssets(true)
.build();
AdLoader loader = new AdLoader.Builder(this, '/21775744923/example/native')
.withNativeAdOptions(nativeAdOptions)
.forNativeAd(nativeAd -> {
List<Uri> imageUris = new ArrayList<>();
for (Image image : nativeAd.getImages()) {
imageUris.add(image.getUri());
}
})
.build();
画像ペイロードのコントロール
一部の広告には、画像が 1 つだけでなく複数含まれています。この機能を使用すると、アプリがすべての画像を表示できるか、1 つの画像のみを表示できるかを指定できます。
boolean
値を指定して NativeAdOptions.Builder.setRequestMultipleImages()
を呼び出します。画像ペイロードの制御はデフォルトで無効になっています。
無効にすると、一連の画像を含むアセットでは最初の画像だけを表示するよう SDK に指示することになります。
有効にすると、複数の画像を含むアセットについて、そのすべての画像をアプリで表示できると示すことになります。
次の例では、複数のイメージアセットを返すように SDK に指示します。
NativeAdOptions nativeAdOptions = new NativeAdOptions.Builder()
.setRequestMultipleImages(true)
.build();
AdLoader loader = new AdLoader.Builder(this, '/21775744923/example/native')
.withNativeAdOptions(nativeAdOptions)
.build();
AdChoices プレースメント
AdChoices の位置のコントロール
AdChoices の位置コントロールを使用すると、AdChoices アイコンを表示する角を選択できます。
NativeAdOption.AdChoicesPlacement
値を指定して NativeAdOptions.Builder.setAdChoicesPlacement()
を呼び出します。
設定しない場合、AdChoices アイコンの位置は右上に設定されます。
設定されている場合、AdChoices はリクエストに応じてカスタム ポジションに配置されます。
次の例は、カスタムの AdChoices 画像の位置を設定する方法を示しています。
NativeAdOptions nativeAdOptions = new NativeAdOptions.Builder()
.setAdChoicesPlacement(NativeAdOptions.ADCHOICES_BOTTOM_RIGHT)
.build();
AdLoader loader = new AdLoader.Builder(this, '/21775744923/example/native')
.withNativeAdOptions(nativeAdOptions)
.build();
AdChoices カスタムビュー
AdChoices カスタム ビュー機能を使用すると、AdChoices アイコンをカスタムの位置に配置できます。これは、4 つの角のいずれかのみを指定する AdChoices の位置設定とは異なります。
AdChoicesView
値を指定して NativeAdView.setAdChoicesView()
を呼び出します。
次の例は、AdChoicesView
内にレンダリングされる AdChoices アイコンを使用して、カスタム AdChoices ビューを設定する方法を示しています。
public void onNativeAdLoaded(NativeAd ad) {
NativeAdView nativeAdView = new NativeAdView(getApplicationContext());
AdChoicesView adChoicesView = new AdChoicesView(this);
nativeAdView.setAdChoicesView(adChoicesView);
}
動画をコントロールする
ミュート動作を開始する
ミュート状態で開始する動作では、動画の開始音声を無効または有効にできます。
boolean
値を指定して VideoOptions.Builder.setStartMuted()
を呼び出します。ミュート状態で開始する動作はデフォルトで有効になっています。
無効にすると、アプリは動画を音声で開始するようリクエストします。
有効にすると、動画の開始時に音声がミュートされるようにアプリがリクエストします。
次の例は、音声をミュートせずに動画を開始する方法を示しています。
VideoOptions videoOptions = new VideoOptions.Builder()
.setStartMuted(false)
.build();
NativeAdOptions adOptions = new NativeAdOptions.Builder()
.setVideoOptions(videoOptions)
.build();
AdLoader loader = new AdLoader.Builder(this, '/21775744923/example/native')
.withNativeAdOptions(adOptions).build();
カスタム再生コントロール
これにより、動画の再生、一時停止、ミュートを行うためのカスタム動画入力コントロールをリクエストできます。
boolean
値を指定して VideoOptions.Builder.setCustomControlsRequested()
を呼び出します。カスタム再生コントロールはデフォルトで無効になっています。
無効にすると、動画に SDK レンダリングされた入力コントロールが表示されます。
- 広告に動画コンテンツがあり、カスタム コントロールが有効になっている場合は、広告自体にコントロールが表示されないため、広告とともにカスタム コントロールを表示する必要があります。コントロールは、
VideoController
で関連するメソッドを呼び出すことができます。
次の例は、カスタムの再生コントロールを含む動画をリクエストする方法を示しています。
VideoOptions videoOptions = new VideoOptions.Builder()
.setCustomControlsRequested(true)
.build();
NativeAdOptions adOptions = new NativeAdOptions.Builder()
.setVideoOptions(videoOptions)
.build();
AdLoader loader = new AdLoader.Builder(this, '/21775744923/example/native')
.withNativeAdOptions(adOptions).build();
カスタム コントロールが有効になっているかどうかを確認する
返される広告でカスタム動画コントロールが許可されるかどうかはリクエスト時に不明であるため、カスタム コントロールが有効になっているかどうかを確認する必要があります。
Java
@Override
public void onNativeAdLoaded(NativeAd nativeAd) {
MediaContent mediaContent = nativeAd.getMediaContent();
if (mediaContent != null) {
VideoController videoController = mediaContent.getVideoController();
boolean canShowCustomControls = videoController.isCustomControlsEnabled();
}
}
Kotlin
NativeAd.OnNativeAdLoadedListener { ad ->
val mediaContent = ad.mediaContent
if (mediaContent != null) {
val videoController = mediaContent.videoController
val canShowCustomControls = videoController.isCustomControlsEnabled
}
}
カスタムの動画コントロールをレンダリングする
次のベスト プラクティスに沿って、カスタム動画コントロールをレンダリングします。
- カスタム コントロール ビューをネイティブ広告ビューの子としてレンダリングします。このアプローチにより、Open Measurement の視認性計算でカスタム コントロールが好ましくない障害物として考慮されるようになります。
- メディア ビュー全体に不可視のオーバーレイをレンダリングしないようにします。オーバーレイはメディアビューのクリックをブロックするため、ネイティブ広告のパフォーマンスに悪影響を及ぼします。代わりに、コントロールに収まるだけの小さなオーバーレイを作成します。
カスタム クリック操作
カスタム クリック操作は、広告ビューでスワイプを広告クリックとして登録できるネイティブ広告機能です。コンテンツのナビゲーションにスワイプ ジェスチャーを使用するアプリで動作するように設計されています。このガイドでは、ネイティブ広告でカスタム クリック ジェスチャーを有効にする方法について説明します。
タップをクリックとして許可するかどうかを示す NativeAdOptions.SwipeGestureDirection
と boolean
を指定して NativeAdOptions.Builder.enableCustomClickGestureDirection()
を呼び出します。
カスタム クリック ジェスチャーはデフォルトで無効になっています。
無効にすると、アプリは通常のクリック動作をサポートします。
有効にすると、アプリはカスタム スワイプ ジェスチャーをサポートします。
次の例では、右へのカスタム スワイプ ジェスチャーを実装し、タブの通常の動作を維持しています。
NativeAdOptions adOptions = new NativeAdOptions
.Builder()
.enableCustomClickGestureDirection(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.
AdLoader.Builder builder = new AdLoader
.Builder(this, '/21775744923/example/native')
.withNativeAdOptions(adOptions);
スワイプ ジェスチャー イベントをリッスンする
スワイプ ジェスチャーのクリックが記録されると、Google Mobile Ads SDK は既存の onAdClicked()
メソッドに加えて、AdListener
で onAdSwipeGestureClicked()
メソッドを呼び出します。
AdLoader adLoader = builder
.withAdListener(
new AdListener() {
// Called when a swipe gesture click is recorded.
@Override
public void onAdSwipeGestureClicked() {
Log.d(TAG, "A swipe gesture click has occurred.")
}
// Called when a swipe gesture click or a tap click is recorded, as
// configured in NativeAdOptions.
@Override
public void onAdClicked() {
Log.d(TAG, "A swipe gesture click or a tap click has occurred.")
}
})
.build();
メディエーション
カスタム クリック ジェスチャーは、Google Mobile Ads SDK がレンダリングするネイティブ広告でのみ機能します。レンダリングにサードパーティの SDK を必要とする広告ソースは、カスタム クリック ディレクトの設定に応答しません。