Pramuat iklan mengotomatiskan pemuatan, penyimpanan dalam cache, dan pemuatan ulang iklan di GMA Next-Gen SDK. Jika Anda menggunakan pemuatan tunggal, migrasikan ke pramuat iklan untuk pengelolaan siklus proses otomatis, percobaan ulang yang dikelola, dan pemilihan iklan yang dioptimalkan. Untuk mengetahui detail konseptual tentang pramuat iklan, lihat Pramuat iklan. Pramuat iklan mendukung format iklan layar pembuka aplikasi, interstisial, reward, dan interstisial reward.
Halaman ini memandu Anda melakukan migrasi penerapan iklan pemuatan tunggal yang ada ke pramuat iklan. Panduan ini menggunakan iklan interstisial sebagai contoh, tetapi Anda dapat menerapkan proses yang sama ke format iklan yang didukung.
Prasyarat
Sebelum melanjutkan, selesaikan langkah-langkah berikut:
- Siapkan GMA Next-Gen SDK.
- Memiliki penerapan iklan pemuatan tunggal yang ada.
- Aktifkan iklan pengujian untuk memverifikasi penerapan Anda dengan unit iklan pengujian.
Meminta iklan dengan pramuat iklan
Dalam pemuatan tunggal, Anda meminta satu iklan untuk setiap panggilan iklan. Dengan pramuat iklan, Anda memulai pramuat sekali dengan ID pramuat dan konfigurasi pramuat.
Contoh berikut membandingkan panggilan iklan dengan pemuatan tunggal dan pramuat iklan:
Kotlin
Pemuatan tunggal:
// Request a single ad. val adRequest = AdRequest.Builder(adUnitId).build() InterstitialAd.load(adRequest, adLoadCallback)
Pramuat iklan:
// Start the preloader once with a preload configuration. val adRequest = AdRequest.Builder(adUnitId).build() val preloadConfig = PreloadConfiguration(adRequest) InterstitialAdPreloader.start(adUnitId, preloadConfig)
Java
Pemuatan tunggal:
// Request a single ad. AdRequest adRequest = new AdRequest.Builder(adUnitId).build(); InterstitialAd.load(adRequest, adLoadCallback);
Pramuat iklan:
// Start the preloader once with a preload configuration. AdRequest adRequest = new AdRequest.Builder(adUnitId).build(); PreloadConfiguration preloadConfig = new PreloadConfiguration(adRequest); InterstitialAdPreloader.start(adUnitId, preloadConfig);
Beralih ke callback pramuat
Dalam pemuatan tunggal, Anda melampirkan callback pemuatan ke setiap permintaan iklan. Dengan pramuat iklan, Anda mendaftarkan pemroses callback untuk mengamati update cache pramuat. Callback ini memberi tahu aplikasi Anda saat iklan selesai dimuat di awal, gagal dimuat, atau menghabiskan cache.
Contoh berikut membandingkan cara mendaftarkan callback pramuat untuk pemuatan tunggal dan pramuat iklan:
Kotlin
Pemuatan tunggal:
// Listen for single ad request load results. val adLoadCallback = object : AdLoadCallback<InterstitialAd> { override fun onAdLoaded(ad: InterstitialAd) { // Ad loaded for a single request. } override fun onAdFailedToLoad(adError: LoadAdError) { Log.d(TAG, "Ad failed to load: ${adError.message}") } } InterstitialAd.load(adRequest, adLoadCallback)
Pramuat iklan:
// Observe cache updates across multiple ads. val preloadCallback = object : PreloadCallback { override fun onAdPreloaded( preloadId: String, responseInfo: ResponseInfo, ) { // Ad preloaded into the cache and is ready to show. } override fun onAdFailedToPreload( preloadId: String, adError: LoadAdError, ) { Log.d(TAG, "Ad failed to preload: ${adError.message}") } override fun onAdsExhausted(preloadId: String) { // All preloaded ads in the cache have been shown. Log.d(TAG, "Ads exhausted for: $preloadId") } } InterstitialAdPreloader.start(adUnitId, preloadConfig, preloadCallback)
Java
Pemuatan tunggal:
// Listen for single ad request load results. AdLoadCallback<InterstitialAd> adLoadCallback = new AdLoadCallback<InterstitialAd>() { @Override public void onAdLoaded(@NonNull InterstitialAd ad) { // Ad loaded for a single request. } @Override public void onAdFailedToLoad(@NonNull LoadAdError adError) { Log.d(TAG, "Ad failed to load: " + adError.getMessage()); } }; InterstitialAd.load(adRequest, adLoadCallback);
Pramuat iklan:
// Observe cache updates across multiple ads. PreloadCallback preloadCallback = new PreloadCallback() { @Override public void onAdPreloaded( @NonNull String preloadId, @NonNull ResponseInfo responseInfo) { // Ad preloaded into the cache and is ready to show. } @Override public void onAdFailedToPreload( @NonNull String preloadId, @NonNull LoadAdError adError) { Log.d(TAG, "Ad failed to preload: " + adError.getMessage()); } @Override public void onAdsExhausted(@NonNull String preloadId) { // All preloaded ads in the cache have been shown. Log.d(TAG, "Ads exhausted for: " + preloadId); } }; InterstitialAdPreloader.start(adUnitId, preloadConfig, preloadCallback);
Pramuat memanggil metode callback saat GMA Next-Gen SDK memuat atau menyimpan iklan dalam cache, atau saat aplikasi Anda menampilkan iklan.
Menampilkan iklan dari cache
Dalam pemuatan tunggal, Anda menyimpan iklan yang dimuat dalam variabel dan menampilkan iklan saat tersedia. Dengan pramuat iklan, saat iklan tersedia untuk ditampilkan, Anda mengambil iklan langsung dari cache. Dalam kedua pendekatan, lampirkan pemroses peristiwa ke iklan sebelum menampilkannya.
Contoh berikut membandingkan cara menampilkan iklan dengan pramuat iklan versus pemuatan tunggal:
Kotlin
Pemuatan tunggal:
// Retrieve the ad from a saved variable. val interstitialAd = this.interstitialAd ?: return // Display the ad. interstitialAd.show(activity)
Pramuat iklan:
// Retrieve the ad directly from the preloader cache. val interstitialAd = InterstitialAdPreloader.pollAd(adUnitId) ?: return // Display the ad. interstitialAd.show(activity)
Java
Pemuatan tunggal:
// Retrieve the ad from a saved variable. InterstitialAd interstitialAd = this.interstitialAd; if (interstitialAd == null) { return; } // Display the ad. interstitialAd.show(activity);
Pramuat iklan:
// Retrieve the ad directly from the preloader cache. InterstitialAd interstitialAd = InterstitialAdPreloader.pollAd(adUnitId); if (interstitialAd == null) { return; } // Display the ad. interstitialAd.show(activity);
Menghapus penyimpanan dalam cache dan pemuatan ulang manual
Pramuat otomatis memuat iklan pengganti saat Anda mendapatkan iklan. Tidak seperti pemuatan tunggal, Anda tidak perlu menyimpan referensi iklan secara manual, atau menulis logika pemuatan ulang.
Hapus pola berikut dari kode Anda:
- Penyimpanan dalam cache variabel anggota: Hapus variabel anggota yang menyimpan objek iklan.
- Pemuatan ulang manual: Hapus panggilan pemuatan setelah pengguna menutup iklan atau gagal ditampilkan.
- Timer percobaan ulang kustom: Hapus pengendali percobaan ulang, loop backoff, dan timer. GMA Next-Gen SDK otomatis mencoba ulang permintaan pramuat yang gagal.
Membandingkan contoh lengkap
Contoh berikut membandingkan penerapan iklan interstisial lengkap sebelum dan setelah bermigrasi ke pramuat iklan:
Kotlin
Pemuatan tunggal:
// 1. Maintain a member variable to store the ad. private var interstitialAd: InterstitialAd? = null // 2. Load the ad and listen for load completion. private fun loadAd() { val adRequest = AdRequest.Builder(adUnitId).build() InterstitialAd.load( adRequest, object : AdLoadCallback<InterstitialAd> { override fun onAdLoaded(ad: InterstitialAd) { interstitialAd = ad } override fun onAdFailedToLoad(adError: LoadAdError) { interstitialAd = null } }, ) } // 3. Show the saved ad. private fun showAd(activity: Activity) { val interstitialAd = this.interstitialAd ?: return interstitialAd.adEventCallback = object : InterstitialAdEventCallback { override fun onAdDismissedFullScreenContent() { // Reload the ad after dismissal in single-load integrations. loadAd() } override fun onAdFailedToShowFullScreenContent( fullScreenContentError: FullScreenContentError, ) { Log.d(TAG, "Ad failed to show: ${fullScreenContentError.message}") } } interstitialAd.show(activity) }
Pramuat iklan:
// 1. Start preloading with a callback to listen for loaded ads. private fun startPreloading(adUnitId: String) { val preloadCallback = object : PreloadCallback { override fun onAdPreloaded( preloadId: String, responseInfo: ResponseInfo, ) { // Ad preloaded successfully. } override fun onAdFailedToPreload( preloadId: String, adError: LoadAdError, ) { Log.d(TAG, "Ad failed to preload: ${adError.message}") } } val adRequest = AdRequest.Builder(adUnitId).build() val preloadConfig = PreloadConfiguration(adRequest) InterstitialAdPreloader.start(adUnitId, preloadConfig, preloadCallback) } // 2. Show the ad immediately after polling. private fun showAd(activity: Activity, adUnitId: String) { val interstitialAd = InterstitialAdPreloader.pollAd(adUnitId) ?: return interstitialAd.adEventCallback = object : InterstitialAdEventCallback { override fun onAdDismissedFullScreenContent() { // Preloading automatically fetches a replacement ad. } override fun onAdFailedToShowFullScreenContent( fullScreenContentError: FullScreenContentError, ) { Log.d(TAG, "Ad failed to show: ${fullScreenContentError.message}") } } interstitialAd.show(activity) }
Java
Pemuatan tunggal:
// 1. Maintain a member variable to store the ad. private InterstitialAd interstitialAd; // 2. Load the ad and listen for load completion. private void loadAd() { AdRequest adRequest = new AdRequest.Builder(adUnitId).build(); InterstitialAd.load( adRequest, new AdLoadCallback<InterstitialAd>() { @Override public void onAdLoaded(@NonNull InterstitialAd ad) { interstitialAd = ad; } @Override public void onAdFailedToLoad(@NonNull LoadAdError adError) { interstitialAd = null; } }); } // 3. Show the saved ad. private void showAd(Activity activity) { if (interstitialAd == null) { return; } interstitialAd.setAdEventCallback( new InterstitialAdEventCallback() { @Override public void onAdDismissedFullScreenContent() { // Reload the ad after dismissal in single-load integrations. loadAd(); } @Override public void onAdFailedToShowFullScreenContent( @NonNull FullScreenContentError fullScreenContentError) { Log.d( TAG, "Ad failed to show: " + fullScreenContentError.getMessage()); } }); interstitialAd.show(activity); }
Pramuat iklan:
// 1. Start preloading with a callback to listen for loaded ads. private void startPreloading(String adUnitId) { PreloadCallback preloadCallback = new PreloadCallback() { @Override public void onAdPreloaded( @NonNull String preloadId, @NonNull ResponseInfo responseInfo) { // Ad preloaded successfully. } @Override public void onAdFailedToPreload( @NonNull String preloadId, @NonNull LoadAdError adError) { Log.d(TAG, "Ad failed to preload: " + adError.getMessage()); } }; AdRequest adRequest = new AdRequest.Builder(adUnitId).build(); PreloadConfiguration preloadConfig = new PreloadConfiguration(adRequest); InterstitialAdPreloader.start(adUnitId, preloadConfig, preloadCallback); } // 2. Show the ad immediately after polling. private void showAd(Activity activity, String adUnitId) { InterstitialAd interstitialAd = InterstitialAdPreloader.pollAd(adUnitId); if (interstitialAd == null) { return; } interstitialAd.setAdEventCallback( new InterstitialAdEventCallback() { @Override public void onAdDismissedFullScreenContent() { // Preloading automatically fetches a replacement ad. } @Override public void onAdFailedToShowFullScreenContent( @NonNull FullScreenContentError fullScreenContentError) { Log.d( TAG, "Ad failed to show: " + fullScreenContentError.getMessage()); } }); interstitialAd.show(activity); }
Langkah berikutnya
Pelajari referensi berikut untuk mengonfigurasi fitur pramuat, mengintegrasikan format iklan, dan menguji penerapan Anda:
- Menyiapkan iklan di layar pembuka aplikasi
- Menyiapkan iklan banner
- Menyiapkan iklan interstisial
- Memuat iklan native
- Menyiapkan iklan reward
- Menyiapkan iklan interstisial reward