広告のプリロード(ベータ版)

広告のプリロードは、Google Mobile Ads SDK (Legacy)の Google 管理の広告読み込み機能で、 広告の読み込みとキャッシュを代行して管理します。広告のプリロードを使用するには、広告の読み込み方法を変更する必要があります。広告のプリロードを使用してパフォーマンスを最適化するには、 カスタムキャッシュを無効にして、その処理を Google Mobile Ads SDK (Legacy) に委任します。

広告のプリロードには、手動での広告読み込みに比べて次のようなメリットがあります。

  • 参照の管理: 広告を表示する準備ができるまで、読み込まれた広告を保持するため、参照を維持する必要がありません。
  • 自動再読み込み: キャッシュから広告を取り出すと、新しい広告が自動的に読み込まれます。
  • 管理された再試行: 指数バックオフを使用して、失敗したリクエストを自動的に再試行します。
  • 有効期限の処理: 広告の有効期限が切れる前に(通常は 1 時間後)、広告が自動的に更新されます。
  • キャッシュの最適化: 2 以上のキャッシュサイズを使用すると、Google Mobile Ads SDK (Legacy) がキャッシュの順序を最適化して、最適な広告を配信します。

このガイドでは、プリロード広告の設定、プリロード広告の利用可否の確認、プリロード広告の表示について説明します。

前提条件

このチュートリアルに進む前に、設定Google Mobile Ads SDK (Legacy)する必要があります。

広告のプリロードを開始する

アプリの起動時に、start メソッドを 1 回呼び出します。 メソッドを呼び出すと、startは広告を自動的に プリロードし、プリロード構成の失敗したリクエストを再試行します。Google Mobile Ads SDK (Legacy)

次の例では、広告のプリロードを開始します。

Kotlin

// Define a PreloadConfiguration.
val configuration = PreloadConfiguration.Builder("AD_UNIT_ID").build()
// Start the preloading with a given preload ID, preload configuration.
InterstitialAdPreloader.start("AD_UNIT_ID", configuration)

Java

// Define a PreloadConfiguration.
PreloadConfiguration configuration = new PreloadConfiguration.Builder("AD_UNIT_ID").build();
// Start the preloading with a given preload ID, preload configuration.
InterstitialAdPreloader.start("AD_UNIT_ID", configuration);

AD_UNIT_ID は、実際の広告ユニット ID に置き換えてください。

プリロードされた広告を取得して表示する

広告のプリロードを使用すると、Google Mobile Ads SDK (Legacy) はキャッシュに保存された広告を保持します。 広告を表示する場合は、pollAd を呼び出します。 Google Mobile Ads SDK (Legacy) は、利用可能な広告を取得し、次の広告をバックグラウンドで自動的にプリロードします。

広告を表示する準備ができるまで、pollAd メソッドを呼び出さないでください。広告をキャッシュに保持することで、Google Mobile Ads SDK (Legacy)は有効期限切れの広告を自動的に更新し、キャッシュの最適化を行うことができます。

次の例では、プリロードされた広告を取得して表示します。

Kotlin

// pollAd() returns the next available ad and loads another ad in the background.
val ad = InterstitialAdPreloader.pollAd("AD_UNIT_ID")

// [Optional] Interact with the ad as needed.
ad?.onPaidEventListener = OnPaidEventListener {
  // [Optional] Send the impression-level ad revenue information to your preferred
  // analytics server directly within this callback.
}

// Show the ad immediately.
ad?.show(activity)

Java

// pollAd() returns the next available ad and loads another ad in the background.
InterstitialAd ad = InterstitialAdPreloader.pollAd("AD_UNIT_ID");

if (ad != null) {
  // [Optional] Interact with the ad object as needed.
  ad.setOnPaidEventListener(
      adValue -> {
        // [Optional] Send the impression-level ad revenue information to your preferred
        // analytics server directly within this callback.
      });

  // Show the ad immediately.
  ad.show(activity);
}

プリロード広告の利用可否を確認する

広告の利用可否を確認するには、次のいずれかを選択します。

プリロード広告の利用可否を取得する

次の例では、広告の利用可否を確認します。

Kotlin

// Verify that a preloaded ad is available.
if (!InterstitialAdPreloader.isAdAvailable("AD_UNIT_ID")) {
  // No ads are available to show.
}

Java

// Verify that a preloaded ad is available.
if (!InterstitialAdPreloader.isAdAvailable("AD_UNIT_ID")) {
  // No ads are available to show.
}

プリロード広告の利用可否をリッスンする

プリロード イベントに登録すると、広告が正常にプリロードされたとき、プリロードに失敗したとき、広告キャッシュがなくなったときに通知を受け取ることができます。

プリロード イベントは分析を目的としています。プリロード イベントのコールバック内では、次の点に注意してください。

  • start は呼び出さないでください。
  • 広告をすぐに表示する場合を除き、pollAd は呼び出さないでください。

次の例では、広告イベントに登録します。

Kotlin

// Define a callback to receive preload events.
val callback =
  object : PreloadCallbackV2() {
    override fun onAdPreloaded(preloadId: String, responseInfo: ResponseInfo?) {
      // Called when preloaded ads are available.
    }

    override fun onAdsExhausted(preloadId: String) {
      // Called when no preloaded ads are available.
    }

    override fun onAdFailedToPreload(preloadId: String, adError: AdError) {
      // Called when preloaded ads failed to load.
    }
  }

Java

// Define a callback to receive preload events.
PreloadCallbackV2 callback =
    new PreloadCallbackV2() {
      @Override
      public void onAdPreloaded(
          @NonNull String preloadId, @Nullable ResponseInfo responseInfo) {
        // Called when preloaded ads are available.
      }

      @Override
      public void onAdsExhausted(@NonNull String preloadId) {
        // Called when no preloaded ads are available.
      }

      @Override
      public void onAdFailedToPreload(@NonNull String preloadId, @NonNull AdError adError) {
        // Called when preloaded ads failed to load.
      }
    };

広告のプリロードを停止する

セッションでプリロード ID の広告を再度表示する必要がない場合は、広告のプリロードを停止できます。特定のプリロード ID の広告のプリロードを停止するには、プリロード ID を指定して destroy を呼び出します。すべてのプリローダーのプリロードを停止するには、destroyAll を呼び出します。

Kotlin

// Stops the preloading and destroy preloaded ads.
InterstitialAdPreloader.destroy("AD_UNIT_ID")
// Stops the preloading and destroy all ads.
InterstitialAdPreloader.destroyAll()

Java

// Stops the preloading and destroy preloaded ads.
InterstitialAdPreloader.destroy("AD_UNIT_ID");
// Stops the preloading and destroy all ads.
InterstitialAdPreloader.destroyAll();

バッファサイズを設定する

バッファサイズは、メモリに保持されるプリロード広告の数を制御します。デフォルトでは、Google はバッファサイズを最適化して、メモリ使用量と広告配信のレイテンシのバランスを取ります。次の広告が読み込まれる前にアプリに広告が表示される場合は、カスタム バッファサイズを設定して、メモリに保持する広告の数を増やすことができます。

Kotlin

// Define a PreloadConfiguration and buffer up to 3 preloaded ads.
val configuration = PreloadConfiguration.Builder("AD_UNIT_ID").setBufferSize(3).build()

Java

// Define a PreloadConfiguration and buffer up to 3 preloaded ads.
PreloadConfiguration configuration =
    new PreloadConfiguration.Builder("AD_UNIT_ID").setBufferSize(3).build();

プリロード キャッシュの上限

Google Mobile Ads SDK (Legacy) では、すべての広告ユニットとプリロード ID のプリロード広告の合計数にアプリ全体の上限が適用されます:

  • デフォルトの上限: Google Mobile Ads SDK (Legacy) は、最大 6 つのプリロード広告をメモリに保持します。 この上限は、すべてのフォーマットとプリロード ID で共有されます。
  • プリロード ID ごとに 2 ~ 3 のバッファサイズを維持することをおすすめします。