Pramuat iklan (Alfa)

Pemuatan awal iklan adalah fitur pemuatan iklan yang dikelola Google di GMA Next-Gen SDK yang mengelola pemuatan dan penyimpanan iklan dalam cache atas nama Anda. Pramuat iklan memerlukan perubahan dalam cara Anda mengelola pemuatan iklan. Untuk mengoptimalkan performa menggunakan pra-pemuatan iklan, nonaktifkan penyimpanan dalam cache kustom dan serahkan tanggung jawab tersebut ke GMA Next-Gen SDK.

Pramuat iklan menawarkan manfaat berikut dibandingkan pemuatan iklan manual:

  • Pengelolaan referensi: menyimpan iklan yang dimuat sehingga Anda tidak perlu mempertahankan referensi hingga Anda siap menayangkannya.
  • Pemuatan ulang otomatis: otomatis memuat iklan baru saat Anda menarik iklan dari cache.
  • Coba lagi yang dikelola: otomatis mencoba lagi permintaan yang gagal menggunakan backoff eksponensial.
  • Penanganan masa berlaku: otomatis memuat ulang iklan sebelum masa berlakunya berakhir (biasanya setelah satu jam).
  • Pengoptimalan cache: Jika Anda menggunakan ukuran cache yang lebih besar dari satu, GMA Next-Gen SDK mengoptimalkan urutan cache untuk menayangkan iklan terbaik.

Panduan ini membahas cara mengonfigurasi iklan pramuat, memeriksa ketersediaan iklan pramuat, dan menampilkan iklan pramuat.

Prasyarat

Sebelum melanjutkan tutorial, Anda harus menyelesaikan item berikut:

Mulai mem-pramuat iklan

Untuk mulai mem-pramuat iklan, panggil startPreload(). Panggil metode ini sekali saja di awal aplikasi. Setelah Anda memanggil startPreload(), GMA Next-Gen SDK akan otomatis memuat iklan dan mencoba kembali permintaan yang gagal untuk konfigurasi yang dimuat sebelumnya.

Contoh berikut memulai pra-pemuatan iklan:

Kotlin

private fun startPreloading(adUnitId: String) {
  val 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);
}

Mendapatkan dan menampilkan iklan yang sudah dipramuat

Saat menggunakan pramuat iklan, GMA Next-Gen SDK menyimpan iklan yang di-cache. Saat Anda ingin menampilkan iklan, panggil pollAd(). GMA Next-Gen SDK mengambil iklan yang tersedia dan otomatis memuat iklan berikutnya di latar belakang.

Hindari memanggil metode ini hingga Anda siap menampilkan iklan. Menyimpan iklan dalam cache memungkinkan GMA Next-Gen SDK memperbarui iklan yang sudah habis masa berlakunya secara otomatis dan melakukan pengoptimalan cache.

Contoh berikut mengambil dan menampilkan iklan yang sudah 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);
  }
}

Memeriksa ketersediaan iklan pemuatan awal

Untuk memeriksa ketersediaan iklan, pilih salah satu opsi berikut:

Mendapatkan ketersediaan iklan yang sudah dipramuat

Contoh berikut memeriksa ketersediaan iklan:

Kotlin

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

Java

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

Mendengarkan ketersediaan iklan yang sudah dimuat sebelumnya

Daftarkan peristiwa pramuat untuk mendapatkan notifikasi saat iklan berhasil dipramuat, gagal dipramuat, atau cache iklan habis.

Peristiwa pra-muat ditujukan untuk tujuan analisis. Dalam callback peristiwa pra-muat:

  • Jangan memanggil startPreload().
  • Hindari memanggil pollAd() kecuali jika iklan akan ditampilkan segera.

Contoh berikut mendaftar untuk peristiwa iklan:

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")
        // [Important] Don't call ad preloader start() or pollAd() from onAdsExhausted.
      }

      override fun onAdPreloaded(preloadId: String, responseInfo: ResponseInfo) {
        Log.i(TAG, "Interstitial preload ad $preloadId is available")
      }
    }
  val 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");
          // [Important] Don't call ad preloader start() or pollAd() from onAdsExhausted.
        }

        @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);
}

Menghentikan pemuatan iklan lebih awal

Jika tidak perlu menampilkan iklan untuk ID pramuat lagi dalam sesi, Anda dapat menghentikan pramuat iklan. Untuk berhenti memuat iklan lebih awal untuk ID pramuat tertentu, panggil destroy() dengan ID pramuat.

Menetapkan ukuran buffer

Ukuran buffer mengontrol jumlah iklan yang dipramuat dan disimpan dalam memori. Secara default, Google mengoptimalkan ukuran buffer untuk menyeimbangkan pemakaian memori dan latensi penayangan iklan. Jika aplikasi Anda menampilkan iklan sebelum iklan berikutnya dimuat, Anda dapat menetapkan ukuran buffer kustom untuk meningkatkan jumlah iklan yang disimpan dalam memori. Sebaiknya gunakan ukuran buffer maksimal empat.

Kotlin

private fun setBufferSize(adUnitId: String) {
  val 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);
}