廣告預先載入 (Alpha 版)

廣告預先載入是 Google Mobile Ads SDK 中由 Google 管理的廣告載入功能,可代您管理廣告載入和快取。如要預先載入廣告,您必須變更廣告載入的管理方式。如要使用廣告預先載入功能提升成效,請停用自訂快取,並將這項責任委派給 Google Mobile Ads SDK

相較於手動載入廣告,廣告預先載入具有下列優點:

  • 參照管理:保存已載入的廣告,因此您不必維護參照,直到準備好顯示廣告為止。
  • 自動重新載入:從快取中取出廣告時,系統會自動載入新廣告。
  • 管理重試:使用指數輪詢自動重試失敗的要求。
  • 到期處理:在廣告到期前 (通常是一小時後) 自動重新整理廣告。
  • 快取最佳化:如果使用的快取大小超過一,Google Mobile Ads SDK 會最佳化快取順序,放送最合適的廣告。

本指南說明如何設定預先載入廣告、檢查預先載入廣告是否可用,以及顯示預先載入廣告。

必要條件

繼續進行本教學課程前,請先完成下列項目:

  • 選用:下載並執行 JavaKotlin 的範例應用程式。

開始預先載入廣告

如要開始預先載入廣告,請呼叫 start()。請只在應用程式啟動時呼叫此方法一次。呼叫 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();

設定緩衝區大小

緩衝區大小會控管記憶體中預先載入的廣告數量。根據預設,Google 會調整緩衝區大小,以平衡記憶體用量和廣告放送延遲。如果應用程式會在載入下一個廣告前顯示廣告,您可以設定自訂緩衝區大小,增加記憶體中保留的廣告數量。建議緩衝區大小最多為四。

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