การโหลดโฆษณาล่วงหน้าจะโหลด แคช และโหลดโฆษณาซ้ำโดยอัตโนมัติใน GMA Next-Gen SDK หากใช้การโหลดครั้งเดียว ให้ย้ายข้อมูลไปใช้การโหลดโฆษณาล่วงหน้าเพื่อการจัดการวงจรการใช้งานอัตโนมัติ การลองใหม่ที่จัดการ และการเลือกโฆษณาที่เพิ่มประสิทธิภาพ ดูรายละเอียดแนวคิด เกี่ยวกับการโหลดโฆษณาล่วงหน้าได้ที่ การโหลดโฆษณาล่วงหน้า การโหลดโฆษณาล่วงหน้ารองรับรูปแบบโฆษณาเปิดแอป โฆษณาคั่นระหว่างหน้า โฆษณาที่มีการให้รางวัล และโฆษณาคั่นระหว่างหน้าที่มีการให้รางวัล
หน้านี้จะแนะนำขั้นตอนการย้ายข้อมูลการติดตั้งใช้งานโฆษณาแบบโหลดครั้งเดียวที่มีอยู่ไปเป็นการโหลดโฆษณาล่วงหน้า คู่มือนี้ใช้โฆษณาคั่นระหว่างหน้าเป็นตัวอย่าง แต่คุณสามารถใช้กระบวนการเดียวกันกับรูปแบบโฆษณาที่รองรับได้
ข้อกำหนดเบื้องต้น
โปรดทำตามขั้นตอนต่อไปนี้ให้เสร็จสมบูรณ์ก่อนดำเนินการต่อ
- ตั้งค่า GMA Next-Gen SDK
- มีการติดตั้งใช้งานโฆษณาแบบโหลดครั้งเดียวอยู่แล้ว
- เปิดใช้โฆษณาทดสอบ เพื่อยืนยันการติดตั้งใช้งานด้วย หน่วยโฆษณาทดสอบ
ขอโฆษณาด้วยการโหลดโฆษณาล่วงหน้า
ในการโหลดครั้งเดียว คุณจะขอโฆษณาเดียวสำหรับคำขอโฆษณาแต่ละรายการ แต่การโหลดโฆษณาล่วงหน้าจะเริ่มต้นตัวโหลดล่วงหน้าเพียงครั้งเดียวด้วยรหัสการโหลดล่วงหน้าและการกำหนดค่าการโหลดล่วงหน้า
ตัวอย่างต่อไปนี้เปรียบเทียบคำขอโฆษณาด้วยการโหลดครั้งเดียวกับการโหลดโฆษณาล่วงหน้า
Kotlin
การโหลดครั้งเดียว
// Request a single ad. val adRequest = AdRequest.Builder(adUnitId).build() InterstitialAd.load(adRequest, adLoadCallback)
การโหลดโฆษณาล่วงหน้า
// Start the preloader once with a preload configuration. val adRequest = AdRequest.Builder(adUnitId).build() val preloadConfig = PreloadConfiguration(adRequest) InterstitialAdPreloader.start(adUnitId, preloadConfig)
Java
การโหลดครั้งเดียว
// Request a single ad. AdRequest adRequest = new AdRequest.Builder(adUnitId).build(); InterstitialAd.load(adRequest, adLoadCallback);
การโหลดโฆษณาล่วงหน้า
// Start the preloader once with a preload configuration. AdRequest adRequest = new AdRequest.Builder(adUnitId).build(); PreloadConfiguration preloadConfig = new PreloadConfiguration(adRequest); InterstitialAdPreloader.start(adUnitId, preloadConfig);
เปลี่ยนไปใช้ Callback การโหลดล่วงหน้า
ในการโหลดครั้งเดียว คุณจะแนบ Callback การโหลดกับคำขอโฆษณาแต่ละรายการ แต่การโหลดโฆษณาล่วงหน้าจะลงทะเบียน Listener Callback เพื่อสังเกตการอัปเดตแคชของตัวโหลดล่วงหน้า Callback เหล่านี้จะแจ้งให้แอปทราบเมื่อการโหลดโฆษณาล่วงหน้าเสร็จสมบูรณ์ โหลดไม่สำเร็จ หรือแคชหมด
ตัวอย่างต่อไปนี้เปรียบเทียบวิธีลงทะเบียน Callback การโหลดล่วงหน้าสำหรับการโหลดครั้งเดียวและการโหลดโฆษณาล่วงหน้า
Kotlin
การโหลดครั้งเดียว
// 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)
การโหลดโฆษณาล่วงหน้า
// 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
การโหลดครั้งเดียว
// 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);
การโหลดโฆษณาล่วงหน้า
// 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);
ตัวโหลดล่วงหน้าจะเรียกใช้เมธอด Callback เมื่อ GMA Next-Gen SDK โหลดหรือแคช โฆษณา หรือเมื่อแอปแสดงโฆษณา
แสดงโฆษณาจากแคช
ในการโหลดครั้งเดียว คุณจะบันทึกโฆษณาที่โหลดแล้วในตัวแปรและแสดงโฆษณาเมื่อพร้อม แต่การโหลดโฆษณาล่วงหน้าจะดึงโฆษณาจากแคชโดยตรงเมื่อโฆษณาพร้อมที่จะแสดง ทั้ง 2 วิธีนี้ให้แนบ Listener เหตุการณ์กับโฆษณาก่อนแสดง
ตัวอย่างต่อไปนี้เปรียบเทียบการแสดงโฆษณาด้วยการโหลดโฆษณาล่วงหน้ากับการโหลดครั้งเดียว
Kotlin
การโหลดครั้งเดียว
// Retrieve the ad from a saved variable. val interstitialAd = this.interstitialAd ?: return // Display the ad. interstitialAd.show(activity)
การโหลดโฆษณาล่วงหน้า
// Retrieve the ad directly from the preloader cache. val interstitialAd = InterstitialAdPreloader.pollAd(adUnitId) ?: return // Display the ad. interstitialAd.show(activity)
Java
การโหลดครั้งเดียว
// Retrieve the ad from a saved variable. InterstitialAd interstitialAd = this.interstitialAd; if (interstitialAd == null) { return; } // Display the ad. interstitialAd.show(activity);
การโหลดโฆษณาล่วงหน้า
// Retrieve the ad directly from the preloader cache. InterstitialAd interstitialAd = InterstitialAdPreloader.pollAd(adUnitId); if (interstitialAd == null) { return; } // Display the ad. interstitialAd.show(activity);
นำการแคชและการโหลดซ้ำด้วยตนเองออก
ตัวโหลดล่วงหน้าจะโหลดโฆษณาที่จะมาแทนที่โดยอัตโนมัติเมื่อคุณได้รับโฆษณา คุณจึงไม่จำเป็นต้องจัดเก็บข้อมูลอ้างอิงโฆษณาหรือเขียนตรรกะการโหลดซ้ำด้วยตนเองเหมือนกับการโหลดครั้งเดียว
นำรูปแบบต่อไปนี้ออกจากโค้ด
- การแคชตัวแปรสมาชิก: ลบตัวแปรสมาชิกที่จัดเก็บออบเจ็กต์โฆษณา
- การโหลดซ้ำด้วยตนเอง: ลบการเรียกโหลดหลังจากที่ผู้ใช้ปิดโฆษณาหรือ แสดงไม่สำเร็จ
- ตัวจับเวลาการลองใหม่ที่กำหนดเอง: ลบตัวจัดการการลองใหม่ ลูปการถอย และตัวจับเวลา GMA Next-Gen SDK จะลองใหม่กับคำขอโหลดล่วงหน้าที่ไม่สำเร็จโดยอัตโนมัติ
เปรียบเทียบตัวอย่างที่เสร็จสมบูรณ์
ตัวอย่างต่อไปนี้เปรียบเทียบการติดตั้งใช้งานโฆษณาคั่นระหว่างหน้าที่สมบูรณ์ก่อนและหลังการย้ายข้อมูลไปเป็นการโหลดโฆษณาล่วงหน้า
Kotlin
การโหลดครั้งเดียว
// 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) }
การโหลดโฆษณาล่วงหน้า
// 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
การโหลดครั้งเดียว
// 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); }
การโหลดโฆษณาล่วงหน้า
// 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); }
ขั้นตอนถัดไป
สำรวจแหล่งข้อมูลต่อไปนี้เพื่อกำหนดค่าฟีเจอร์การโหลดล่วงหน้า ผสานรวมรูปแบบโฆษณา และทดสอบการติดตั้งใช้งาน
- ตั้งค่าโฆษณาเปิดแอป
- ตั้งค่าโฆษณาแบนเนอร์
- ตั้งค่าโฆษณาคั่นระหว่างหน้า
- โหลดโฆษณาเนทีฟ
- ตั้งค่าโฆษณาที่มีการให้รางวัล
- ตั้งค่าโฆษณาคั่นระหว่างหน้าที่มีการให้รางวัล