ネイティブ広告には、追加のカスタマイズを行い、広告エクスペリエンスを最大限に高めるための高度な機能が多数用意されています。このガイドでは、ネイティブ広告の高度な機能の使用方法について説明します。
前提条件
- ネイティブ広告フォーマットを統合していること
アセット コントロール
このセクションでは、ネイティブ広告のクリエイティブ アセットをカスタマイズする方法について詳しく説明します。メディア アセットの優先アスペクト比と、画像アセットのダウンロードと表示の方法を指定できます。
優先するメディア アスペクト比のコントロール
メディア アスペクト比のコントロールを使うと、広告クリエイティブに希望するアスペクト比を指定できます。
NativeAdOptions.MediaAspectRatio 値を指定して NativeAdOptions.Builder.setMediaAspectRatio() を呼び出します。
- 値を設定していない場合、返される広告では任意のメディア アスペクト比が適用されます。 
- 値を設定した場合、アスペクト比の優先タイプを指定してユーザー エクスペリエンスを改善できます。 
次の例では、特定のアスペクト比の画像または動画を優先して返すよう SDK に指示しています。
Java
Kotlin
AD_UNIT_ID は、実際の広告ユニット ID に置き換えられます。
画像ダウンロードのコントロール
画像ダウンロードのコントロールを使うと、SDK から画像アセットを返すか、URI のみを返すかを指定できます。
boolean 値を指定して NativeAdOptions.Builder.setReturnUrlsForImageAssets() を呼び出します。
- 画像ダウンロードのコントロールは、デフォルトでは無効になっています。 
- 無効になっている場合、Google Mobile Ads SDK により画像と URI の両方に値が入力されます。 
- 有効になっている場合、SDK によって URI だけに値が入力されるため、実際の画像はご自身の判断でダウンロードできます。 
次の例では、URI のみを返すよう SDK に指示しています。
Java
Kotlin
画像ペイロードのコントロール
広告によっては、画像が 1 つだけでなく複数含まれている場合があります。この機能では、アプリですべての画像を表示するか、1 つの画像のみを表示するかを指定します。
boolean 値を指定して NativeAdOptions.Builder.setRequestMultipleImages() を呼び出します。
- 画像ペイロードのコントロールはデフォルトでは無効になっています。 
- 無効になっている場合、複数の画像を含むアセットでは、最初の画像だけを返すようにアプリから SDK に指示することになります。 
- 有効になっている場合、複数の画像を含むアセットについて、そのすべての画像を表示できることをアプリで指定します。 
次の例では、複数の画像アセットを返すように SDK に指示しています。
Java
Kotlin
AdChoices プレースメント
このセクションでは、AdChoices オーバーレイの配置方法について詳しく説明します。配置を 4 つの隅のいずれかに設定するか、カスタムビュー内に表示するかを選択できます。
AdChoices の位置のコントロール
AdChoices の位置のコントロールを使うと、四隅のどこに AdChoices アイコンを表示するかを選択できます。
NativeAdOption.AdChoicesPlacement 値を指定して NativeAdOptions.Builder.setAdChoicesPlacement() を呼び出します。
- 設定されていない場合、AdChoices アイコンは右上に配置されます。 
- 設定されている場合、AdChoices はリクエストされたカスタム位置に配置されます。 
次の例は、AdChoices 画像のカスタム位置を設定する方法を示しています。
Java
Kotlin
AdChoices カスタムビュー
AdChoices カスタムビュー機能を使うと、AdChoices アイコンを選択した場所に配置できます。これは、四隅のいずれか 1 つだけを指定できる AdChoices の位置のコントロールとは異なります。
AdChoicesView 値を指定して NativeAdView.setAdChoicesView() を呼び出します。
次の例は、AdChoices アイコンを AdChoicesView 内にレンダリングするカスタム AdChoices ビューの設定方法を示しています。
Java
NativeAdView nativeAdView = new NativeAdView(context);
AdChoicesView adChoicesView = new AdChoicesView(context);
nativeAdView.setAdChoicesView(adChoicesView);
Kotlin
val nativeAdView = NativeAdView(context)
val adChoicesView = AdChoicesView(context)
nativeAdView.adChoicesView = adChoicesView
動画のコントロール
このセクションでは、動画広告の再生をカスタマイズする方法について詳しく説明します。初期ミュート状態を設定し、カスタム再生コントロールを実装することができます。
ミュート動作の開始
ミュート動作の開始では、動画の開始時の音声を無効または有効にできます。
boolean 値を指定して VideoOptions.Builder.setStartMuted() を呼び出します。
- 開始時のミュートは、デフォルトで有効になっています。 
- 無効になっている場合、アプリは動画を音声付きで開始するようリクエストします。 
- 有効になっている場合、アプリは動画をミュート状態で開始するようリクエストします。 
次の例は、ミュートされていない音声付きで動画を開始する方法を示しています。
Java
Kotlin
カスタム再生コントロール
この機能では、動画の再生、一時停止、ミュートを行うカスタム動画入力のコントロールをリクエストできます。
boolean 値を指定して VideoOptions.Builder.setCustomControlsRequested() を呼び出します。
- カスタム再生コントロールはデフォルトでは無効になっています。 
- 無効になっている場合、動画に SDK でレンダリングされた入力コントロールが表示されます。 
広告に動画コンテンツが含まれていて、カスタム コントロールが有効になっている場合は、広告自体にはコントロールが表示されないため、広告とともにカスタム コントロールを表示する必要があります。その後、コントロールは
VideoController で関連するメソッドを呼び出すことができます。
次の例は、カスタム再生コントロールを使用して動画をリクエストする方法を示しています。
Java
Kotlin
カスタム コントロールが有効になっているかどうかを確認する
返される広告でカスタム動画コントロールが許可されるかどうかはリクエスト時にわからないため、カスタム コントロールが有効になっているかどうかを確認する必要があります。
Java
MediaContent mediaContent = nativeAd.getMediaContent();
if (mediaContent != null) {
  VideoController videoController = mediaContent.getVideoController();
  boolean canShowCustomControls = videoController.isCustomControlsEnabled();
}
Kotlin
val mediaContent = nativeAd.mediaContent
if (mediaContent != null) {
  val videoController = mediaContent.videoController
  val canShowCustomControls = videoController.isCustomControlsEnabled
}
カスタム動画コントロールをレンダリングする
次のベスト プラクティスに沿って、カスタム動画コントロールをレンダリングします。
- カスタム コントロール ビューをネイティブ広告ビューの子としてレンダリングします。このアプローチにより、Open Measurement の視認性の算出時に、カスタム コントロールが好ましい被覆物として考慮されます。
- メディアビュー全体に非表示のオーバーレイをレンダリングしないようにします。オーバーレイはメディアビューのクリックをブロックするため、ネイティブ広告のパフォーマンスに悪影響を与えます。代わりに、コントロールを収めるのに最低限必要な大きさの小さなオーバーレイを作成してください。
カスタム クリック操作
カスタム クリック操作は、広告ビューでのスワイプを広告クリックとして登録できるようにするネイティブ広告の機能で、コンテンツのナビゲーションにスワイプ操作を使用するアプリで動作するように設計されています。このガイドでは、ネイティブ広告でカスタム クリック操作を有効にする方法について説明します。
NativeAdOptions.SwipeGestureDirection と boolean を指定して NativeAdOptions.Builder.enableCustomClickGestureDirection() を呼び出し、タップ操作をクリックとして許可するかどうかを示します。
次の例では、右へのカスタム スワイプ操作を実装し、通常のタブの動作を維持しています。
- カスタム クリック操作はデフォルトでは無効になっています。 
- 無効になっている場合、アプリでは通常のクリック動作がサポートされます。 
- 有効になっている場合、アプリではカスタム スワイプ操作がサポートされます。 
次の例では、右へのカスタム スワイプ操作を実装し、通常のタブの動作を維持しています。
Java
Kotlin
スワイプ操作イベントをリッスンする
スワイプ操作によるクリックが記録されると、Google Mobile Ads SDK は既存の onAdClicked() メソッドに加えて、AdListener の onAdSwipeGestureClicked() メソッドも呼び出します。
Java
AdLoader adLoader =
    new AdLoader.Builder(context, AD_UNIT_ID)
        .withAdListener(
            new AdListener() {
              // Called when a swipe gesture click is recorded.
              @Override
              public void onAdSwipeGestureClicked() {
                // Called when a swipe gesture click is recorded.
                Log.d(TAG, "A swipe gesture click has occurred.");
              }
              @Override
              public void onAdClicked() {
                // Called when a swipe gesture click or a tap click is recorded, as
                // configured in NativeAdOptions.
                Log.d(TAG, "A swipe gesture click or a tap click has occurred.");
              }
            })
        .build();
Kotlin
val adLoader =
  AdLoader.Builder(context, AD_UNIT_ID)
    .withAdListener(
      object : AdListener() {
        override fun onAdSwipeGestureClicked() {
          // Called when a swipe gesture click is recorded.
          Log.d(TAG, "A swipe gesture click has occurred.")
        }
        override fun onAdClicked() {
          // Called when a swipe gesture click or a tap click is recorded, as
          // configured in NativeAdOptions.
          Log.d(TAG, "A swipe gesture click or a tap click has occurred.")
        }
      }
    )
    .build()
メディエーション
カスタム クリック操作は、Google Mobile Ads SDK がレンダリングするネイティブ広告でのみ機能します。レンダリングに第三者 SDK を必要とする広告ソースは、カスタム クリックの方向の設定に応答しません。