Pramuat iklan (Alfa)

Pemuatan iklan awal adalah proses pemuatan dan penyimpanan dalam cache yang dikelola SDK yang menghilangkan kebutuhan untuk pemuatan dan penyimpanan dalam cache iklan secara manual. Proses ini memungkinkan Anda menampilkan iklan saat diperlukan tanpa harus memuat iklan secara manual atau menangani callback pemuatan iklan.

Panduan ini membahas cara mengonfigurasi iklan pramuat, memeriksa ketersediaan iklan pramuat, serta cara mendapatkan dan menampilkan iklan yang dimuat sebelumnya.

Prasyarat

Sebelum melanjutkan tutorial, Anda harus menyelesaikan item berikut:

  • Instal Google Mobile Ads SDK (beta) versi 0.14.0-alpha01 atau yang lebih tinggi.
  • Selesaikan Panduan memulai.

Mulai memuat iklan terlebih dahulu

Untuk mulai memuat ulang, panggil startPreload(). Google Mobile Ads SDK otomatis mencoba lagi permintaan iklan yang gagal untuk konfigurasi yang telah dimuat sebelumnya.

Contoh berikut memulai pemuatan iklan terlebih dahulu:

Kotlin

private fun startPreloading(adUnitID: String) {
  val adRequest: AdRequest = AdRequest.Builder(adUnitID).build()
  val preloadConfig = PreloadConfiguration(adRequest)
  InterstitialAdPreloader.start(adUnitID, preloadConfig)
}

Java

private void startPreloading(String adUnitId) {
  AdRequest adRequest = new AdRequest.Builder(adUnitId).build();
  PreloadConfiguration preloadConfig = new PreloadConfiguration(adRequest);
  InterstitialAdPreloader.start(adUnitId, preloadConfig);
}

Opsional: Mengubah iklan pra-pemuatan

Untuk mengubah iklan mana yang dimuat sebelumnya, panggil destroy(), lalu panggil startPreload() lagi dengan konfigurasi yang telah diubah.

Opsional: Menghentikan pemuatan iklan di awal

Untuk menghentikan pemuatan awal iklan, panggil destroy() dengan ID pemuatan awal.

Opsional: Menetapkan ukuran buffer

Ukuran buffer mengontrol jumlah iklan yang telah dimuat sebelumnya dan disimpan dalam memori. Jika aplikasi Anda menampilkan iklan lebih cepat daripada iklan baru dapat dimuat, tetapkan ukuran buffer ke nilai yang lebih besar. Jika Anda khawatir dengan penggunaan memori, tetapkan ukuran buffer ke nilai rendah seperti 2.

Kotlin

private fun setBufferSize(adUnitID: String) {
  val adRequest: AdRequest = AdRequest.Builder(adUnitID).build()
  val preloadConfig = PreloadConfiguration(adRequest, bufferSize = 3)
  InterstitialAdPreloader.start(adUnitID, preloadConfig)
}

Java

private void setBufferSize(String adUnitId) {
  AdRequest adRequest = new AdRequest.Builder(adUnitId).build();
  PreloadConfiguration preloadConfig = new PreloadConfiguration(adRequest, 3);
  InterstitialAdPreloader.start(adUnitId, preloadConfig);
}

Opsional: Menerima notifikasi pra-pemuatan

Terapkan PreloadCallback untuk menerima notifikasi untuk peristiwa pra-pemuatan iklan. Untuk men-debug dan mencatat, peristiwa ini menyediakan objek info respons.

Kotlin

private fun startPreloadingWithCallback(adUnitID: String) {
  val preloadCallback =
    // [Important] Don't call ad preloader start() or pollAd() within the PreloadCallback.
    object : PreloadCallback {
      override fun onAdFailedToPreload(preloadId: String, adError: LoadAdError) {
        Log.i(
          TAG,
          ("Interstitial preload ad $preloadId failed to load with error: ${adError.message}"),
        )
        // [Optional] Get the error response info for additional details.
        // val responseInfo = adError.responseInfo
      }

      override fun onAdsExhausted(preloadId: String) {
        Log.i(TAG, "Interstitial preload ad $preloadId is not available")
      }

      override fun onAdPreloaded(preloadId: String, responseInfo: ResponseInfo) {
        Log.i(TAG, "Interstitial preload ad $preloadId is available")
      }
    }
  val adRequest: AdRequest = AdRequest.Builder(adUnitID).build()
  val preloadConfig = PreloadConfiguration(adRequest)
  InterstitialAdPreloader.start(adUnitID, preloadConfig, preloadCallback)
}

Java

private void startPreloadingWithCallback(String adUnitId) {
  PreloadCallback preloadCallback =
      // [Important] Don't call ad preloader start() or pollAd() within the PreloadCallback.
      new PreloadCallback() {
        @Override
        public void onAdFailedToPreload(String preloadId, LoadAdError adError) {
          Log.e(
              TAG,
              String.format(
                  "Interstitial preload ad %s failed to load with error: %s",
                  preloadId, adError.getMessage()));
          // [Optional] Get the error response info for additional details.
          // ResponseInfo responseInfo = adError.getResponseInfo();
        }

        @Override
        public void onAdsExhausted(String preloadId) {
          Log.i(TAG, "Interstitial preload ad " + preloadId + " is not available");
        }

        @Override
        public void onAdPreloaded(String preloadId, ResponseInfo responseInfo) {
          Log.i(TAG, "Interstitial preload ad " + preloadId + " is available");
        }
      };

  AdRequest adRequest = new AdRequest.Builder(adUnitId).build();
  PreloadConfiguration preloadConfig = new PreloadConfiguration(adRequest);
  InterstitialAdPreloader.start(adUnitId, preloadConfig, preloadCallback);
}

Mendapatkan dan menampilkan iklan yang sudah dimuat sebelumnya

Iklan tersedia untuk ditampilkan setelah onAdsAvailable() dipanggil. Iklan terus tersedia saat iklan ditampilkan dan habis. Setelah mendapatkan iklan, dengarkan peristiwa siklus proses iklan dan tampilkan iklan.

Contoh berikut menunjukkan iklan yang dimuat sebelumnya:

Kotlin

private fun pollAndShowAd(activity: Activity, adUnitID: String) {
  // Polling returns the next available ad and loads another ad in the background.
  val ad = InterstitialAdPreloader.pollAd(adUnitID)

  // Interact with the ad object as needed.
  ad?.apply {
    Log.d(TAG, "Interstitial ad response info: ${this.getResponseInfo()}")
    this.adEventCallback =
      object : InterstitialAdEventCallback {
        override fun onAdImpression() {
          Log.d(TAG, "Interstitial ad recorded an impression.")
        }

        override fun onAdPaid(value: AdValue) {
          Log.d(TAG, "Interstitial ad onPaidEvent: ${value.valueMicros} ${value.currencyCode}")
        }
      }

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

Java

private void pollAndShowAd(Activity activity, String adUnitId) {
  // Polling returns the next available ad and loads another ad in the background.
  final InterstitialAd ad = InterstitialAdPreloader.pollAd(adUnitId);

  // Interact with the ad object as needed.
  if (ad != null) {
    Log.d(TAG, "Interstitial ad response info: " + ad.getResponseInfo());
    ad.setAdEventCallback(
        new InterstitialAdEventCallback() {
          @Override
          public void onAdImpression() {
            Log.d(TAG, "Interstitial ad recorded an impression.");
          }

          @Override
          public void onAdPaid(AdValue value) {
            Log.d(
                TAG,
                "Interstitial ad onPaidEvent: "
                    + value.getValueMicros()
                    + " "
                    + value.getCurrencyCode());
          }
        });

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

Opsional: Periksa ketersediaan iklan yang sudah dimuat sebelumnya

Untuk mengetahui apakah iklan tersedia, panggil isAdAvailable:

Kotlin

private fun isAdAvailable(adUnitID: String): Boolean {
  return InterstitialAdPreloader.isAdAvailable(adUnitID)
}

Java

private boolean isAdAvailable(String adUnitId) {
  return InterstitialAdPreloader.isAdAvailable(adUnitId);
}