โฆษณาคั่นระหว่างหน้าคือโฆษณาแบบเต็มหน้าจอที่แสดงทับอินเทอร์เฟซของแอป คุณจะแสดงโฆษณาเหล่านี้ที่จุดเปลี่ยนหน้าปกติในแอป เช่น ระหว่างทำกิจกรรมต่างๆ หรือในช่วงหยุดชั่วคราวระหว่างเปลี่ยนด่านในเกม
เมื่อแอปแสดงโฆษณาคั่นระหว่างหน้า ผู้ใช้สามารถแตะโฆษณาแล้ว ดำเนินการต่อ หรือปิดโฆษณาแล้วกลับไปที่แอป โปรดอ่านกรณีศึกษาของเรา
คู่มือนี้อธิบายวิธีผสานรวมโฆษณาคั่นระหว่างหน้าเข้ากับแอป Android
ก่อนเริ่มต้น
ก่อนดำเนินการต่อ ให้ทำดังนี้
- ตั้งค่า GMA Next-Gen SDK
- ใช้รหัสหน่วยโฆษณาคั่นระหว่างหน้าสำหรับการทดสอบ
ca-app-pub-3940256099942544/1033173712- เมื่อสร้างและทดสอบแอป โปรดใช้โฆษณาสำหรับการทดสอบแทนโฆษณาจริง หากคุณไม่ใช้รหัสหน่วยโฆษณาสำหรับการทดสอบ Google อาจระงับบัญชีของคุณ
- ก่อนเผยแพร่แอป ให้แทนที่รหัสนี้ด้วยรหัสหน่วยโฆษณาของคุณ
- ดูรายละเอียดเกี่ยวกับโฆษณาสำหรับการทดสอบGMA Next-Gen SDK ได้ที่ หัวข้อเปิดใช้โฆษณาสำหรับการทดสอบ
ทำความเข้าใจการโหลดโฆษณาล่วงหน้า
การโหลดโฆษณาล่วงหน้าใน GMA Next-Gen SDK จะโหลดและแคชโฆษณาโดยอัตโนมัติ
การโหลดโฆษณาล่วงหน้ามีประโยชน์ดังนี้
- การจัดการการอ้างอิง: รักษาการอ้างอิงไว้จนกว่าจะแสดงโฆษณา
- การโหลดซ้ำอัตโนมัติ: โหลดโฆษณาใหม่เมื่อมีการดึงโฆษณาจากแคช
- การลองใหม่ที่จัดการโดยระบบ: โหลดโฆษณาใหม่เมื่อโหลดโฆษณาไม่สำเร็จ
- การจัดการการหมดอายุ: รีเฟรชโฆษณาก่อนหมดอายุ
- การเพิ่มประสิทธิภาพแคช: เพิ่มประสิทธิภาพลำดับแคชเพื่อแสดงโฆษณาที่มีลำดับความสำคัญสูงสุด
เริ่มการโหลดโฆษณาล่วงหน้า
หากต้องการเริ่มโหลดโฆษณาล่วงหน้า ให้เรียกใช้เมธอด startPreload() เพียงครั้งเดียวเมื่อเริ่มแอป หลังจากเรียกใช้เมธอด startPreload() แล้ว
GMA Next-Gen SDK จะโหลดโฆษณาล่วงหน้าโดยอัตโนมัติและลองคำขอที่ล้มเหลวสำหรับการ
กำหนดค่าที่โหลดล่วงหน้าอีกครั้ง
ตัวอย่างต่อไปนี้แสดงวิธีเริ่มโหลดโฆษณาล่วงหน้า
Kotlin
Java
แทนที่ AD_UNIT_ID ด้วยรหัสหน่วยโฆษณา
ตัวอย่างก่อนหน้านี้แสดงวิธีใช้รหัสหน่วยโฆษณาเป็นรหัสการโหลดล่วงหน้า รหัสการโหลดล่วงหน้าคือตัวระบุสตริงที่คุณสร้างขึ้นเพื่อระบุการกำหนดค่าการโหลดโฆษณาล่วงหน้า หากแอปต้องใช้การกำหนดค่าการกำหนดเป้าหมายหลายรายการสำหรับรหัสหน่วยโฆษณาเดียวกัน ให้ส่งตัวระบุสตริงที่กำหนดเอง
รับและแสดงโฆษณาที่โหลดล่วงหน้า
เมื่อต้องการแสดงโฆษณา ให้เรียกใช้เมธอด pollAd()
GMA Next-Gen SDK จะดึงโฆษณาที่พร้อมใช้งานและโหลดโฆษณาถัดไปล่วงหน้าโดยอัตโนมัติ
ในเบื้องหลัง หากไม่มีโฆษณาที่พร้อมใช้งาน GMA Next-Gen SDK จะแสดงผลว่าไม่มีโฆษณา
เมื่อมีออบเจ็กต์โฆษณาที่พร้อมใช้งาน ให้เรียกใช้เมธอด show เพื่อแสดงโฆษณา
ตัวอย่างต่อไปนี้แสดงวิธีดึงและแสดงโฆษณาที่โหลดล่วงหน้า
Kotlin
Java
อย่าเรียกใช้เมธอด pollAd() จนกว่าจะพร้อมแสดงโฆษณา หากต้องการอ่านข้อมูลการตอบกลับของโฆษณาโดยไม่แสดงโฆษณา ให้ดูที่
อ่านข้อมูลการตอบกลับ
รอเหตุการณ์โฆษณา
รอเหตุการณ์โฆษณาก่อนแสดงโฆษณา ตัวอย่างต่อไปนี้แสดงวิธีลงทะเบียน Callback สำหรับเหตุการณ์โฆษณา
Kotlin
// Listen for ad events. val ad = interstitialAd if (ad == null) { Log.e(TAG, "Interstitial ad is not ready yet.") return } ad.adEventCallback = object : InterstitialAdEventCallback { override fun onAdShowedFullScreenContent() { // Interstitial ad did show. } override fun onAdDismissedFullScreenContent() { // Interstitial ad did dismiss. interstitialAd = null } override fun onAdFailedToShowFullScreenContent( fullScreenContentError: FullScreenContentError ) { // Interstitial ad failed to show. Log.e(TAG, "Interstitial ad failed to show: ${fullScreenContentError.message}") } override fun onAdImpression() { // Interstitial ad did record an impression. } override fun onAdClicked() { // Interstitial ad did record a click. } }
Java
// Listen for ad events. if (interstitialAd == null) { Log.e(TAG, "Interstitial ad is not ready yet."); return; } interstitialAd.setAdEventCallback( new InterstitialAdEventCallback() { @Override public void onAdShowedFullScreenContent() { // Interstitial ad did show. } @Override public void onAdDismissedFullScreenContent() { // Interstitial ad did dismiss. interstitialAd = null; } @Override public void onAdFailedToShowFullScreenContent( @NonNull FullScreenContentError fullScreenContentError) { // Interstitial ad failed to show. Log.e(TAG, "Interstitial ad failed to show: " + fullScreenContentError.getMessage()); } @Override public void onAdImpression() { // Interstitial ad did record an impression. } @Override public void onAdClicked() { // Interstitial ad did record a click. } });
ไม่บังคับ: รอเหตุการณ์การโหลดล่วงหน้า
เมื่อเริ่มโหลดโฆษณาล่วงหน้า ให้ลงทะเบียนเพื่อรับเหตุการณ์การโหลดล่วงหน้าเพื่อรับการแจ้งเตือนเมื่อโหลดโฆษณาล่วงหน้าสำเร็จ โหลดล่วงหน้าไม่สำเร็จ หรือแคชโฆษณาหมด
ตัวอย่างต่อไปนี้แสดงวิธีลงทะเบียนเพื่อรับเหตุการณ์โฆษณาการโหลดล่วงหน้า
Kotlin
val preloadCallback = // [Important] Don't call ad preloader start() or pollAd() within the PreloadCallback. object : PreloadCallback { override fun onAdFailedToPreload(preloadId: String, adError: LoadAdError) { Log.d( TAG, ("Interstitial preload ad $preloadId failed to load with error: ${adError.message}"), ) } 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
PreloadCallback preloadCallback = // [Important] Don't call ad preloader start() or pollAd() within the PreloadCallback. new PreloadCallback() { @Override public void onAdFailedToPreload(@NonNull String preloadId, @NonNull LoadAdError adError) { Log.d( 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(@NonNull 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(@NonNull String preloadId, @NonNull 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);
เมื่อโหลดโฆษณาไม่สำเร็จ GMA Next-Gen SDK จะโหลดโฆษณาล่วงหน้าโดยอัตโนมัติและลองคำขอที่ล้มเหลวสำหรับการกำหนดค่าที่โหลดล่วงหน้าอีกครั้ง
ไม่บังคับ: ตรวจสอบความพร้อมใช้งานของโฆษณา
หากต้องการทราบว่ามีโฆษณาพร้อมใช้งานหรือไม่ ให้ตรวจสอบความพร้อมใช้งานของโฆษณา ตัวอย่างต่อไปนี้แสดงวิธีตรวจสอบว่ามีโฆษณาที่โหลดล่วงหน้าพร้อมใช้งานหรือไม่
Kotlin
private fun isAdAvailable(adUnitId: String): Boolean { return InterstitialAdPreloader.isAdAvailable(adUnitId) }
Java
private boolean isAdAvailable(String adUnitId) { return InterstitialAdPreloader.isAdAvailable(adUnitId); }
ไม่บังคับ: ตั้งค่าขนาดบัฟเฟอร์
ขนาดบัฟเฟอร์จะควบคุมจำนวนโฆษณาที่โหลดล่วงหน้าซึ่งเก็บไว้ในหน่วยความจำ โดยค่าเริ่มต้น Google จะเพิ่มประสิทธิภาพขนาดบัฟเฟอร์เพื่อปรับสมดุลการใช้หน่วยความจำและความหน่วงในการแสดงโฆษณา คุณสามารถตั้งค่าขนาดบัฟเฟอร์ที่กำหนดเองเพื่อเพิ่มจำนวนโฆษณาที่เก็บไว้ในหน่วยความจำ เราขอแนะนำให้ตั้งค่าขนาดบัฟเฟอร์สูงสุดเป็น 4
ตัวอย่างต่อไปนี้แสดงวิธีตั้งค่าขนาดบัฟเฟอร์เป็นโฆษณาที่โหลดล่วงหน้า 4 รายการ
Kotlin
val adRequest = AdRequest.Builder(adUnitId).build() // Maintain small or default buffer size unless rapid transitions are expected. val preloadConfig = PreloadConfiguration(adRequest, bufferSize = 2) InterstitialAdPreloader.start(adUnitId, preloadConfig)
Java
// Maintain small or default buffer size unless rapid transitions are expected. AdRequest adRequest = new AdRequest.Builder(adUnitId).build(); PreloadConfiguration preloadConfig = new PreloadConfiguration(adRequest, 2); InterstitialAdPreloader.start(adUnitId, preloadConfig);
ขีดจำกัดแคชการโหลดล่วงหน้า
GMA Next-Gen SDK กำหนดขีดจำกัดทั่วทั้งแอปสำหรับจำนวนโฆษณาที่โหลดล่วงหน้าทั้งหมด ในหน่วยโฆษณาและรหัสการโหลดล่วงหน้าทั้งหมด
- ขีดจำกัดเริ่มต้น: Google จะเก็บโฆษณาที่โหลดล่วงหน้าไว้ในหน่วยความจำสูงสุด 6 รายการ ขีดจำกัดนี้ใช้ร่วมกันในทุกรูปแบบและรหัสการโหลดล่วงหน้า
- เราขอแนะนำให้ตั้งค่าขนาดบัฟเฟอร์เป็น 2 หรือ 3 ต่อรหัสการโหลดล่วงหน้า
ไม่บังคับ: หยุดการโหลดโฆษณาล่วงหน้า
หากไม่จำเป็นต้องแสดงโฆษณาสำหรับรหัสการโหลดล่วงหน้าหนึ่งๆ อีกในเซสชัน คุณก็หยุดการโหลดโฆษณาล่วงหน้าได้ หากต้องการหยุดโหลดโฆษณาสำหรับรหัสการโหลดล่วงหน้าหนึ่งๆ ให้เรียกใช้เมธอด destroy() ด้วยรหัสการโหลดล่วงหน้า การเรียกใช้เมธอด destroy() จะนำโฆษณาที่โหลดล่วงหน้าทั้งหมดที่เชื่อมโยงกับรหัสการโหลดล่วงหน้าออกจากแคช
ตัวอย่างต่อไปนี้แสดงวิธีหยุดการโหลดโฆษณาล่วงหน้า
Kotlin
private fun stopPreloading(adUnitId: String) { // Stops the preloading and destroy preloaded ads. InterstitialAdPreloader.destroy(adUnitId) }
Java
private void stopPreloading(String adUnitId) { // Stops the preloading and destroy preloaded ads. InterstitialAdPreloader.destroy(adUnitId); }
ไม่บังคับ: อ่านข้อมูลการตอบกลับ
อ่านข้อมูลการตอบกลับของโฆษณาที่โหลดล่วงหน้าถัดไปโดยไม่ต้องนำโฆษณาออกจากแคช
ตัวอย่างต่อไปนี้แสดงวิธีอ่านข้อมูลการตอบกลับของโฆษณาที่โหลดล่วงหน้าถัดไป
Kotlin
val responseInfo = InterstitialAdPreloader.peekAdResponseInfo(preloadId) if (responseInfo == null) { Log.e(TAG, "Failed to peek ad response info.") return } Log.d(TAG, "Peeked ad response ID: ${responseInfo.responseId}")
Java
ResponseInfo responseInfo = InterstitialAdPreloader.peekAdResponseInfo(preloadId); if (responseInfo == null) { Log.e(TAG, "Failed to peek ad response info."); return; } Log.d(TAG, "Peeked ad response ID: " + responseInfo.getResponseId());