スクロール バナーにインライン アダプティブを使用する

アダプティブ バナーでは、指定した広告の幅に応じて、デバイスごとに最適な広告サイズが決定されます。アンカー アダプティブ バナーとは異なり、インライン アダプティブ バナーは大きく、高さがあり、高さが固定されていません。インライン アダプティブ バナーは、高さが変動します。これらのバナーは、画面全体または指定した最大高さまで表示されます。

このガイドでは、インライン アダプティブ バナーを作成してバナーのサイズを設定する方法について説明します。

次の画像は、スクロール可能なコンテンツに表示されるインライン アダプティブ バナーを示しています。

アダプティブ バナーとインライン アダプティブ バナーの違いを示した図

始める前に

続行する前に、バナー広告を設定していることを確認してください。

インライン アダプティブ バナーの完全な例を確認するには、次のサンプルアプリをダウンロードしてください。

インライン アダプティブ バナーを実装する

インライン アダプティブ バナーを実装するには、広告サイズを設定し、広告リクエストを作成して、広告を読み込みます。

インライン アダプティブ バナーのサイズを設定するには、広告の幅を決定します。一般的な方法は次のとおりです。

  • 全画面幅を使用する。
  • 広告を含む親レイアウトの幅を使用する。
  • デバイスのセーフエリアを考慮して幅を調整する。

広告サイズ オブジェクトを作成する際は、この計算された幅を使用します。

次の例では、広告サイズを設定し、広告リクエストを作成して、広告を読み込んでいます。

Kotlin

private fun loadAd() {
  // Create an inline adaptive ad size. 320 is a placeholder value.
  // Replace 320 with your banner container width.
  val adSize = AdSize.getCurrentOrientationInlineAdaptiveBannerAdSize(this, 320)

  // Step 1 - Create a BannerAdRequest object with ad unit ID and size.
  val adRequest = BannerAdRequest.Builder("AD_UNIT_ID", adSize).build()

  // Step 2 - Load the ad.
  BannerAd.load(
    adRequest,
    object : AdLoadCallback<BannerAd> {
      override fun onAdLoaded(ad: BannerAd) {
        // Assign the loaded ad to the BannerAd object.
        bannerAd = ad
        // Step 3 - Call BannerAd.getView() to get the View and add it
        // to view hierarchy on the UI thread.
        activity?.runOnUiThread {
          binding.bannerViewContainer.addView(ad.getView(requireActivity()))
        }
      }

      override fun onAdFailedToLoad(loadAdError: LoadAdError) {
        bannerAd = null
      }
    }
  )
}

Java

private void loadAd() {
  // Create an inline adaptive ad size. 320 is a placeholder value.
  // Replace 320 with your banner container width.
  AdSize adSize = AdSize.getCurrentOrientationInlineAdaptiveBannerAdSize(this, 320);

  // Step 1 - Create a BannerAdRequest object with ad unit ID and size.
  BannerAdRequest adRequest = new BannerAdRequest.Builder("AD_UNIT_ID",
      adSize).build();

  // Step 2 - Load the ad.
  BannerAd.load(
      adRequest,
      new AdLoadCallback<BannerAd>() {
        @Override
        public void onAdLoaded(@NonNull BannerAd ad) {
          // Assign the loaded ad to the BannerAd object.
          bannerAd = ad;
          // Step 3 - Call BannerAd.getView() to get the View and add it
          // to view hierarchy on the UI thread.
          if (getActivity() != null) {
            getActivity()
                .runOnUiThread(() ->
                    binding.bannerViewContainer.addView(ad.getView(getActivity())));
          }
        }

        @Override
        public void onAdFailedToLoad(@NonNull LoadAdError adError) {
          bannerAd = null;
        }
      });
}

広告サイズは、デバイスの画面サイズ以下のサイズに設定します。 画面の最大サイズを判断するには、 Resources.getDisplayMetrics メソッドを使用します。AdSize オブジェクトのサイズには、密度非依存ピクセル(dp)を使用します。比較する際は、画面サイズをピクセルから dp に変換します。 サイズの制約について詳しくは、 アド マネージャーで未入力のインプレッションに関する問題を解決するをご覧ください。

アダプティブ バナーを使用するために広告申込情報を更新または作成する必要がある場合は、 アダプティブ バナー向けの広告申込情報を設定するをご覧ください。

インライン アダプティブ バナーのレイアウトを設定する

特定のレイアウトでインライン アダプティブ バナー広告をプリロードするには、次のメソッドを使用します。

アプリが縦向きと横向きの両方の画面表示に対応しており、現在のレイアウトでアダプティブ バナー広告をプリロードするには、 AdSize.getCurrentOrientationInlineAdaptiveBannerAdSize(Context context, int width) メソッドを使用します。 このメソッドは、現在のレイアウトに広告を読み込みます。

インライン アダプティブ バナーの高さを制限する

デフォルトでは、maxHeight 値を指定せずに作成されたインライン アダプティブ バナーの最大高さはデバイスの高さと同じになります。インライン アダプティブ バナーの高さを制限するには、 AdSize.getInlineAdaptiveBannerAdSize(int width, int maxHeight) メソッドを使用します。