Pramuat iklan adalah fitur pemuatan iklan yang dikelola Google di Google Mobile Ads SDK yang mengelola pemuatan dan caching iklan atas nama Anda. Pramuat iklan memerlukan perubahan dalam cara Anda mengelola pemuatan iklan. Untuk mengoptimalkan performa menggunakan pramuat iklan, nonaktifkan caching 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 menayangkannya.
- Pemuatan ulang otomatis: otomatis memuat iklan baru saat Anda mengambil iklan dari cache.
- Percobaan ulang yang dikelola: otomatis mencoba lagi permintaan yang gagal menggunakan backoff eksponensial.
- Penanganan masa berlaku: otomatis memperbarui iklan sebelum masa berlakunya berakhir (biasanya setelah satu jam).
- Pengoptimalan cache: Jika Anda menggunakan ukuran cache yang lebih besar dari satu, Google Mobile Ads 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:
- Instal Google Mobile Ads SDK versi 13.3.0 atau yang lebih baru. Referensi developer untuk versi sebelumnya tersedia di 11.12.0 - 12.2.0, tetapi sebaiknya gunakan 13.3.0 atau yang lebih baru dan ikuti panduan ini ke depannya.
- Siapkan Google Mobile Ads SDK.
- Opsional: Download dan jalankan aplikasi contoh pramuat iklan.
Mengimpor header beta
Untuk menggunakan pramuat iklan, impor header beta:
Swift
import GoogleMobileAds_Private
Objective-C
#import <GoogleMobileAds/GoogleMobileAds_Beta.h>
Mulai memuat iklan
Untuk mulai memuat iklan, panggil preload(). Panggil metode ini hanya sekali per ID pramuat. Sebaiknya panggil metode ini saat sesi aplikasi dimulai. Setelah Anda memanggil preload(), Google Mobile Ads SDK
akan otomatis memuat iklan dan mencoba lagi permintaan yang gagal untuk ID pramuat tersebut.
Contoh berikut memulai pramuat iklan:
Swift
private func startPreloading(adUnitID: String) {
// 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
- (void)startPreloadingWithAdUnitID:(NSString *)adUnitID {
// 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 pramuat
Saat menggunakan pramuat iklan, Google Mobile Ads SDK akan menyimpan iklan yang di-cache.
Jika ingin menampilkan iklan, panggil adWithPreloadID().
Google Mobile Ads SDK akan mengambil iklan yang tersedia dan otomatis memuat
iklan berikutnya di latar belakang.
Contoh berikut mengambil dan menampilkan iklan pramuat:
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 load 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:(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 pramuat
Untuk mendapatkan metadata iklan pramuat, Anda dapat mencari objek info respons iklan. Proses ini memungkinkan Anda memeriksa metadata iklan tanpa menghapusnya dari cache.
Contoh berikut mencari metadata iklan pramuat dari objek info respons:
Swift
private func getInterstitialAdResponseInfo(preloadID: String) {
// Get the response info for the preloaded ad.
if let responseInfo = InterstitialAdPreloader.shared.adResponseInfo(withPreloadID: preloadID) {
print("Ad response ID: \(responseInfo.responseID)")
}
}
Objective-C
- (void)getInterstitialAdResponseInfoWithPreloadID:(NSString *)preloadID {
// Get the response info for the preloaded ad.
GADResponseInfo *responseInfo =
[GADInterstitialAdPreloader.sharedInstance
adResponseInfoWithPreloadID:preloadID];
if (responseInfo) {
NSLog(@"Ad response ID: %@", responseInfo.responseID);
}
}
Memeriksa ketersediaan iklan pramuat
Untuk memeriksa ketersediaan iklan, pilih salah satu opsi berikut:
Mendapatkan ketersediaan iklan pramuat
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:(NSString *)adUnitID {
// Verify that an ad is available before polling.
return [GADInterstitialAdPreloader.sharedInstance isAdAvailableWithPreloadID:adUnitID];
}
Memantau ketersediaan iklan pramuat
Daftar ke peristiwa pramuat untuk mendapatkan notifikasi saat iklan berhasil dimuat, gagal dimuat, atau cache iklan habis.
Peristiwa pramuat ditujukan untuk tujuan analisis. Dalam callback peristiwa pramuat:
- Jangan panggil
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.
// [Important] Don't call AdPreloader.shared.preload or AdPreloader.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.
// [Important] 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 tidak perlu menampilkan iklan untuk ID pramuat lagi dalam sesi, Anda dapat menghentikan pramuat iklan. Untuk menghentikan pramuat iklan untuk ID pramuat tertentu, panggil stopPreloadingAndRemoveAdsForPreloadID() dengan ID pramuat. Untuk menghentikan pramuat untuk semua pemuat pramuat, panggil stopPreloadingAndRemoveAllAds().
Menetapkan ukuran buffer
Ukuran buffer mengontrol jumlah iklan pramuat yang disimpan dalam memori. Secara default, Google mengoptimalkan ukuran buffer untuk menyeimbangkan konsumsi 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 dua atau tiga.
Batas cache pramuat
Google Mobile Ads SDK menerapkan batas di seluruh aplikasi pada jumlah total iklan pramuat di semua unit iklan dan ID pramuat:
- Batas default: Google Mobile Ads SDK menyimpan maksimum enam iklan pramuat dalam memori. Batas ini berlaku untuk semua format dan ID pramuat.
- Sebaiknya pertahankan ukuran buffer dua atau tiga per ID pramuat.
Swift
let preloadConfig = PreloadConfigurationV2(adUnitID: "/21775744923/example/rewarded")
preloadConfig.bufferSize = 3
Objective-C
GADPreloadConfigurationV2 *preloadConfig =
[[GADPreloadConfigurationV2 alloc] initWithAdUnitID:@"/21775744923/example/rewarded"];
preloadConfig.bufferSize = 3;