Pramuat iklan (beta)

Pramuat iklan adalah fitur pemuatan iklan yang dikelola Google di Google Mobile Ads SDK yang mengelola pemuatan dan penyimpanan iklan dalam cache atas nama Anda. Pramuat iklan memerlukan perubahan pada cara Anda mengelola pemuatan iklan. Untuk mengoptimalkan performa menggunakan pramuat iklan, nonaktifkan cache kustom dan delegasikan tanggung jawab tersebut ke Google Mobile Ads 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 menampilkannya.
  • Pemuatan ulang otomatis: otomatis memuat iklan baru saat Anda menarik iklan dari cache.
  • Percobaan ulang terkelola: otomatis mencoba ulang permintaan yang gagal menggunakan backoff eksponensial.
  • Penanganan masa berlaku: otomatis memperbarui iklan sebelum masa berlakunya habis (biasanya setelah satu jam).
  • Pengoptimalan cache: jika Anda menggunakan ukuran cache yang lebih besar dari satu, Google Mobile Ads SDK akan 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 ini, Anda harus menyiapkan Google Mobile Ads SDK.

Mulai mem-pramuat iklan

Saat aplikasi dimulai, panggil metode preload sekali. Setelah Anda memanggil metode preload, Google Mobile Ads SDK akan otomatis memuat iklan di awal dan mencoba ulang permintaan yang gagal untuk konfigurasi yang dimuat di awal.

Contoh berikut memulai pramuat iklan:

Swift

// Start the preloading initialization process.
let request = Request()
let interstitialConfig = PreloadConfigurationV2(
  adUnitID: adUnitID, request: request)
InterstitialAdPreloader.shared.preload(
  for: adUnitID, configuration: interstitialConfig, delegate: self)

Objective-C

// Start the preloading initialization process.
GADRequest *request = [GADRequest request];
GADPreloadConfigurationV2 *interstitialConfig =
    [[GADPreloadConfigurationV2 alloc] initWithAdUnitID:adUnitID
                                                request:request];

[GADInterstitialAdPreloader.sharedInstance preloadForPreloadID:adUnitID
                                                 configuration:interstitialConfig
                                                      delegate:self];

Mendapatkan dan menampilkan iklan yang sudah dipramuat

Saat menggunakan pramuat iklan, Google Mobile Ads SDK menyimpan iklan yang di-cache. Jika Anda ingin menampilkan iklan, panggil metode adWithPreloadID. Google Mobile Ads SDK mengambil iklan yang tersedia dan otomatis memuat data iklan berikutnya di latar belakang.

Hindari memanggil metode adWithPreloadID sampai Anda siap menampilkan iklan. Dengan menyimpan iklan di cache, Google Mobile Ads SDK dapat otomatis memperbarui iklan yang sudah tidak berlaku dan melakukan pengoptimalan cache.

Contoh berikut mengambil dan menampilkan iklan yang dipramuat:

Swift

private func showInterstitialAd(adUnitID: String) {
  // Verify that the preloaded ad is available before polling.
  guard isInterstitialAvailable(adUnitID: adUnitID) else {
    print("Preloaded interstitial ad is not available.")
    return
  }

  // Polling returns the next available ad and loads another ad in the background.
  let ad = InterstitialAdPreloader.shared.ad(with: adUnitID)

  // Interact with the ad object as needed.
  print("Interstitial ad response info: \(String(describing: ad?.responseInfo))")
  ad?.paidEventHandler = { (value: AdValue) in
    print("Interstitial ad paid event: \(value.value), \(value.currencyCode)")
  }

  ad?.fullScreenContentDelegate = self
  ad?.present(from: self)
}

Objective-C

- (void)showInterstitialAdWithAdUnitID:(nonnull NSString *)adUnitID {
  // Verify that the preloaded ad is available before polling.
  if (![self isInterstitialAvailableWithAdUnitID:adUnitID]) {
    NSLog(@"Preloaded interstitial ad is not available.");
    return;
  }

  // Getting the preloaded ad loads another ad in the background.
  GADInterstitialAd *ad =
      [GADInterstitialAdPreloader.sharedInstance adWithPreloadID:adUnitID];

  // Interact with the ad object as needed.
  NSLog(@"Interstitial ad response info: %@", ad.responseInfo);
  ad.paidEventHandler = ^(GADAdValue *_Nonnull value) {
    NSLog(@"Interstitial ad paid event: %@ %@ ", value.value, value.currencyCode);
  };
  ad.fullScreenContentDelegate = self;
  [ad presentFromRootViewController:self];
}

Mendapatkan metadata iklan yang dipramuat

Untuk mendapatkan metadata iklan yang dipramuat, Anda dapat mencari objek info respons iklan. Proses ini memungkinkan Anda memeriksa metadata iklan tanpa menghapusnya dari cache.

Contoh berikut mencari metadata iklan yang telah dimuat sebelumnya dari objek info respons:

Swift

private func getInterstitialAdResponseInfo(preloadID: String) {
  // Get the response info for the preloaded ad.
  if let responseInfo = InterstitialAdPreloader.shared.responseInfo(
    with: preloadID)
  {
    print("Ad response ID: \(responseInfo.responseIdentifier ?? "")")
  }
}

Objective-C

- (void)getInterstitialAdResponseInfoWithPreloadID:(nonnull NSString *)preloadID {
  // Get the response info for the preloaded ad.
  GADResponseInfo *responseInfo =
      [GADInterstitialAdPreloader.sharedInstance
          adResponseInfoWithPreloadID:preloadID];
  if (responseInfo) {
    NSLog(@"Ad response ID: %@", responseInfo.responseIdentifier);
  }
}

Memeriksa ketersediaan iklan pra-pemuatan

Untuk memeriksa ketersediaan iklan, pilih salah satu opsi berikut:

Mendapatkan ketersediaan iklan yang sudah dipramuat

Contoh berikut memeriksa ketersediaan iklan:

Swift

private func isInterstitialAvailable(adUnitID: String) -> Bool {
  // Verify that an ad is available before polling.
  return InterstitialAdPreloader.shared.isAdAvailable(with: adUnitID)
}

Objective-C

- (BOOL)isInterstitialAvailableWithAdUnitID:(nonnull NSString *)adUnitID {
  // Verify that an ad is available before polling.
  return [GADInterstitialAdPreloader.sharedInstance isAdAvailableWithPreloadID:adUnitID];
}

Memproses ketersediaan iklan yang sudah dipramuat

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

Peristiwa pramuat ditujukan untuk tujuan analisis. Dalam callback peristiwa pramuat:

  • Jangan memanggil preload.
  • Hindari memanggil adWithPreloadID kecuali jika iklan akan segera ditampilkan.

Contoh berikut mendaftarkan peristiwa iklan:

Swift

func adAvailable(forPreloadID preloadID: String, responseInfo: ResponseInfo) {
  // This callback indicates that an ad is available for the specified configuration.
  // No action is required here, but updating the UI can be useful in some cases.
  print("Ad preloaded successfully for ad preload ID: \(preloadID)")
}

func adsExhausted(forPreloadID preloadID: String) {
  // This callback indicates that all the ads for the specified configuration have been
  // consumed and no ads are available to show. No action is required here, but updating
  // the UI can be useful in some cases.
  // Don't call InterstitialAdPreloader.shared.preload or
  // InterstitialAdPreloader.shared.ad from adsExhausted.
  print("Ad exhausted for ad preload ID: \(preloadID)")
}

func adFailedToPreload(forPreloadID preloadID: String, error: Error) {
  print(
    "Ad failed to load with ad preload ID: \(preloadID), Error: \(error.localizedDescription)"
  )
}

Objective-C

- (void)adAvailableForPreloadID:(nonnull NSString *)preloadID
                   responseInfo:(nonnull GADResponseInfo *)responseInfo {
  // This callback indicates that an ad is available for the specified configuration.
  // No action is required here, but updating the UI can be useful in some cases.
  NSLog(@"Ad preloaded successfully for ad unit ID: %@", preloadID);
}

- (void)adsExhaustedForPreloadID:(nonnull NSString *)preloadID {
  // This callback indicates that all the ads for the specified configuration have been
  // consumed and no ads are available to show. No action is required here, but updating
  // the UI can be useful in some cases.
  // Don't call [GAD<Format>AdPreloader preloadForPreloadID:] or
  // [GAD<Format>AdPreloader adWithPreloadID:] from adsExhaustedForPreloadID.
  NSLog(@"Ad exhausted for ad preload ID: %@", preloadID);
}

- (void)adFailedToPreloadForPreloadID:(nonnull NSString *)preloadID
                                error:(nonnull NSError *)error {
  NSLog(@"Ad failed to load with ad preload ID: %@, Error: %@", preloadID,
        error.localizedDescription);
}

Menghentikan pramuat iklan

Jika Anda tidak perlu menampilkan iklan untuk ID pramuat lagi dalam sesi, Anda dapat berhenti melakukan pramuat iklan. Untuk berhenti melakukan pramuat iklan untuk ID pramuat tertentu, panggil stopPreloadingAndRemoveAdsForPreloadID dengan ID pramuat. Untuk menghentikan pramuat untuk semua pra-pemuat, panggil stopPreloadingAndRemoveAllAds.

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 buffering kustom untuk meningkatkan jumlah iklan yang disimpan dalam memori.

Swift

let preloadConfig = PreloadConfigurationV2(adUnitID: adUnitID)
// Define a PreloadConfiguration and set the buffer size to 2 preloaded ads.
preloadConfig.bufferSize = 2

Objective-C

GADPreloadConfigurationV2 *preloadConfig =
    [[GADPreloadConfigurationV2 alloc] initWithAdUnitID:adUnitID];
// Define a PreloadConfiguration and set the buffer size to 2 preloaded ads.
preloadConfig.bufferSize = 2;

Batas cache pramuat

Google Mobile Ads SDK menerapkan batas di seluruh aplikasi untuk jumlah total iklan yang dipramuat di semua unit iklan dan ID pramuat:

  • Batas default: Google Mobile Ads SDK menyimpan maksimum 6 iklan yang dipramuat dalam memori. Batas ini berlaku untuk semua format dan ID pramuat.
  • Sebaiknya pertahankan ukuran buffering dua untuk setiap ID pramuat.