Pramuat iklan adalah fitur pemuatan iklan yang dikelola Google di GMA Next-Gen SDK yang mengelola pemuatan dan caching iklan untuk 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 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 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, 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:
- Instal GMA Next-Gen SDK versi 0.14.0-alpha01 atau yang lebih baru.
- Siapkan GMA Next-Gen SDK.
- Opsional: Download dan jalankan aplikasi contoh.
Mulai memuat iklan
Untuk mulai memuat iklan, panggil startPreload(). Panggil metode ini hanya sekali per ID pramuat. Sebaiknya panggil metode ini saat sesi aplikasi dimulai. Setelah Anda memanggil startPreload(), GMA Next-Gen SDK
akan otomatis memuat iklan dan mencoba lagi permintaan yang gagal untuk ID pramuat tersebut.
Contoh berikut memulai pramuat 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 pramuat
Saat menggunakan pramuat iklan, GMA Next-Gen SDK akan menyimpan iklan yang di-cache.
Jika ingin menampilkan iklan, panggil pollAd().
GMA Next-Gen SDK mengambil iklan yang tersedia dan otomatis memuat
iklan berikutnya di latar belakang.
Contoh berikut mengambil dan menampilkan iklan pramuat:
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);
}
}
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:
Kotlin
private fun peekAdResponseInfo(preloadId: String) {
InterstitialAdPreloader.peekAdResponseInfo(preloadId)?.let {
Log.d(TAG, "Peeked ad response ID: ${it.responseId}")
}
}
Java
private void peekAdResponseInfo(String preloadId) {
ResponseInfo responseInfo = InterstitialAdPreloader.peekAdResponseInfo(preloadId);
if (responseInfo != null) {
Log.d(TAG, "Peeked ad response ID: " + responseInfo.getResponseId());
}
}
Memeriksa ketersediaan iklan pramuat
Untuk memeriksa ketersediaan iklan, pilih salah satu opsi berikut:
Mendapatkan ketersediaan iklan pramuat
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);
}
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
startPreload(). - Hindari memanggil
pollAd()kecuali jika iklan akan segera ditampilkan.
Contoh berikut mendaftarkan 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 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 destroy() dengan ID pramuat. Untuk menghentikan pramuat untuk semua pemuat pramuat, panggil destroyAll().
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
GMA Next-Gen SDK menerapkan batas di seluruh aplikasi pada jumlah total iklan pramuat di semua unit iklan dan ID pramuat:
- Batas default: GMA Next-Gen 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.
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);
}