広告の事前読み込み(アルファ版)

プラットフォームを選択: Android(ベータ版) 新規 Android iOS Unity

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

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

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

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

前提条件

チュートリアルに進む前に、次の項目を完了する必要があります。

  • Google Mobile Ads SDK バージョン 24.4.0 以降をインストールします。以前のバージョンのデベロッパー リソースは 23.6.1 - 24.3.0 で入手できますが、24.4.0 以降を使用し、今後このガイドに沿って作業することをおすすめします。
  • Google Mobile Ads SDK を設定します。
  • (省略可)Java または Kotlin でサンプルアプリをダウンロードして実行します。

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

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

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

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

広告を表示する準備が整うまでは、このメソッドの呼び出しを避けてください。広告をキャッシュに保存しておくと、Google Mobile Ads SDK によって期限切れの広告が自動的に更新され、キャッシュの最適化が行われます。

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

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() を呼び出します。

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();

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

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

Kotlin

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

Java

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