โฆษณาเปิดแอปเป็นรูปแบบโฆษณาที่มีไว้สำหรับผู้เผยแพร่โฆษณาที่ต้องการสร้างรายได้จากหน้าจอโหลดของแอป ผู้ใช้สามารถปิดโฆษณาที่เปิดแอปได้ทุกเมื่อ เมื่อ ผู้ใช้นำแอปของคุณมาไว้เบื้องหน้า ให้แสดงโฆษณาเปิดแอป
ดูข้อมูลเพิ่มเติมได้ที่ คำแนะนำเกี่ยวกับโฆษณาเปิดแอปคู่มือนี้อธิบายวิธีผสานรวมโฆษณาเปิดแอปเข้ากับแอป Android
ก่อนเริ่มต้น
ก่อนดำเนินการต่อ ให้ทำดังนี้
- ตั้งค่า GMA Next-Gen SDK
- ใช้รหัสหน่วยโฆษณาเปิดแอปทดสอบ
/21775744923/example/app-open- เมื่อสร้างและทดสอบแอป โปรดตรวจสอบว่าคุณใช้โฆษณาทดสอบแทนโฆษณาจริง หากคุณไม่ใช้รหัสหน่วยโฆษณาทดสอบ Google อาจ ระงับบัญชีของคุณ
- ก่อนเผยแพร่แอป ให้แทนที่รหัสนี้ด้วยรหัสหน่วยโฆษณา
- ดูรายละเอียดเกี่ยวกับGMA Next-Gen SDKโฆษณาทดสอบได้ที่ เปิดใช้โฆษณาทดสอบ
ทำความเข้าใจการโหลดโฆษณาล่วงหน้า (เบต้า)
การโหลดโฆษณาล่วงหน้า (เบต้า) ใน GMA Next-Gen SDK จะทำให้การโหลดและการแคชโฆษณาเป็นไปโดยอัตโนมัติ
การโหลดโฆษณาล่วงหน้ามีประโยชน์ดังนี้
- การจัดการการอ้างอิง: เก็บรักษาการอ้างอิงไว้จนกว่าจะมีการแสดงโฆษณา
- การโหลดซ้ำอัตโนมัติ: โหลดโฆษณาใหม่เมื่อดึงโฆษณาจากแคช
- การลองใหม่ที่จัดการแล้ว: โหลดโฆษณาใหม่เมื่อโหลดโฆษณาไม่สำเร็จ
- การจัดการการหมดอายุ: รีเฟรชโฆษณาก่อนหมดอายุ
- การเพิ่มประสิทธิภาพแคช: เพิ่มประสิทธิภาพลำดับแคชเพื่อแสดงโฆษณาที่มีลำดับความสำคัญสูงสุด
เริ่มการโหลดโฆษณาล่วงหน้า
หากต้องการเริ่มโหลดโฆษณาล่วงหน้า ให้เรียกใช้เมธอด start เพียงครั้งเดียวเมื่อเริ่มแอป หลังจากเรียกใช้startเมธอด
GMA Next-Gen SDK ระบบจะโหลดโฆษณาล่วงหน้าโดยอัตโนมัติและลองส่งคำขอที่ไม่สำเร็จอีกครั้งสำหรับ
การกำหนดค่าที่โหลดล่วงหน้า
ตัวอย่างต่อไปนี้แสดงวิธีเริ่มโหลดโฆษณาล่วงหน้า
Kotlin
Java
แทนที่ AD_UNIT_ID ด้วยรหัสหน่วยโฆษณา
ตัวอย่างก่อนหน้าแสดงวิธีใช้รหัสหน่วยโฆษณาเป็นรหัสการโหลดล่วงหน้า รหัสการโหลดล่วงหน้าคือตัวระบุสตริงที่คุณสร้างขึ้นเพื่อระบุการกำหนดค่าการโหลดโฆษณาล่วงหน้า หากแอปต้องมีการกำหนดค่าการกำหนดเป้าหมายหลายรายการสำหรับรหัสหน่วยโฆษณาเดียวกัน ให้ส่งตัวระบุสตริงที่กำหนดเอง
รับและแสดงโฆษณาที่โหลดล่วงหน้า
เมื่อต้องการแสดงโฆษณา ให้เรียกใช้เมธอด pollAd
GMA Next-Gen SDK จะดึงโฆษณาที่พร้อมใช้งานและโหลดโฆษณาถัดไปล่วงหน้าโดยอัตโนมัติ
ในเบื้องหลัง หากไม่มีโฆษณาพร้อมใช้งาน GMA Next-Gen SDK จะไม่แสดงโฆษณา
show เพื่อแสดงโฆษณา
ตัวอย่างต่อไปนี้แสดงวิธีดึงและแสดงโฆษณาที่โหลดล่วงหน้า
Kotlin
Java
จนกว่าคุณจะพร้อมแสดงโฆษณา ให้หลีกเลี่ยงการเรียกใช้เมธอด pollAd
หากต้องการอ่านข้อมูลการตอบกลับโฆษณาโดยไม่แสดง ให้ดูอ่านข้อมูลการตอบกลับ
รอเหตุการณ์โฆษณา
ก่อนแสดงโฆษณา ให้รอเหตุการณ์โฆษณา ตัวอย่างต่อไปนี้ ลงทะเบียนการเรียกกลับสำหรับเหตุการณ์โฆษณา
Kotlin
private fun listenToAdEvents() { // Listen for ad events. val ad = appOpenAd if (ad == null) { Log.e(TAG, "App open ad is not ready yet.") return } ad.adEventCallback = object : AppOpenAdEventCallback { override fun onAdShowedFullScreenContent() { // App open ad did show. } override fun onAdDismissedFullScreenContent() { // App open ad did dismiss. appOpenAd = null } override fun onAdFailedToShowFullScreenContent( fullScreenContentError: FullScreenContentError ) { // App open ad failed to show. Log.e(TAG, "App open ad failed to show: ${fullScreenContentError.message}") } override fun onAdImpression() { // App open ad did record an impression. } override fun onAdClicked() { // App open ad did record a click. } } }
Java
private void listenToAdEvents() { // Listen for ad events. if (appOpenAd == null) { Log.e(TAG, "App open ad is not ready yet."); return; } appOpenAd.setAdEventCallback( new AppOpenAdEventCallback() { @Override public void onAdShowedFullScreenContent() { // App open ad did show. } @Override public void onAdDismissedFullScreenContent() { // App open ad did dismiss. appOpenAd = null; } @Override public void onAdFailedToShowFullScreenContent( @NonNull FullScreenContentError fullScreenContentError) { // App open ad failed to show. Log.e(TAG, "App open ad failed to show: " + fullScreenContentError.getMessage()); } @Override public void onAdImpression() { // App open ad did record an impression. } @Override public void onAdClicked() { // App open ad did record a click. } }); }
ไม่บังคับ: ฟังเหตุการณ์การโหลดล่วงหน้า
เมื่อเริ่มโหลดโฆษณาล่วงหน้า ให้ลงทะเบียนสำหรับเหตุการณ์การโหลดล่วงหน้าเพื่อรับการแจ้งเตือน เมื่อโหลดโฆษณาล่วงหน้าสำเร็จ โหลดล่วงหน้าไม่สำเร็จ หรือแคชโฆษณา หมด
ตัวอย่างต่อไปนี้แสดงวิธีลงทะเบียนเหตุการณ์โฆษณาที่โหลดล่วงหน้า
Kotlin
val preloadCallback = object : PreloadCallback { override fun onAdFailedToPreload(preloadId: String, adError: LoadAdError) { Log.d(TAG, "App open preload ad $preloadId failed to load with error: ${adError.message}") } override fun onAdsExhausted(preloadId: String) { Log.i(TAG, "App open preload ad $preloadId is not available") } override fun onAdPreloaded(preloadId: String, responseInfo: ResponseInfo) { Log.i(TAG, "App open preload ad $preloadId is available") } } val adRequest = AdRequest.Builder(adUnitId).build() val preloadConfig = PreloadConfiguration(adRequest) AppOpenAdPreloader.start(adUnitId, preloadConfig, preloadCallback)
Java
PreloadCallback preloadCallback = new PreloadCallback() { @Override public void onAdFailedToPreload(@NonNull String preloadId, @NonNull LoadAdError adError) { Log.d( TAG, String.format( "App open preload ad %s failed to load with error: %s", preloadId, adError.getMessage())); } @Override public void onAdsExhausted(@NonNull String preloadId) { Log.i(TAG, String.format("App open preload ad %s is not available", preloadId)); } @Override public void onAdPreloaded(@NonNull String preloadId, @NonNull ResponseInfo responseInfo) { Log.i(TAG, String.format("App open preload ad %s is available", preloadId)); } }; AdRequest adRequest = new AdRequest.Builder(adUnitId).build(); PreloadConfiguration preloadConfig = new PreloadConfiguration(adRequest); AppOpenAdPreloader.start(adUnitId, preloadConfig, preloadCallback);
เมื่อโหลดโฆษณาไม่สำเร็จ GMA Next-Gen SDK จะโหลดโฆษณาล่วงหน้าโดยอัตโนมัติและลองส่งคำขอที่ล้มเหลวอีกครั้ง สำหรับการกำหนดค่าที่โหลดล่วงหน้า
ไม่บังคับ: ตรวจสอบความพร้อมใช้งานของโฆษณา
หากต้องการทราบว่ามีโฆษณาพร้อมใช้งานหรือไม่ ให้ตรวจสอบความพร้อมใช้งานของโฆษณา ตัวอย่างต่อไปนี้จะตรวจสอบว่ามีโฆษณาที่โหลดล่วงหน้าหรือไม่
Kotlin
private fun isAdAvailable(adUnitId: String): Boolean { return AppOpenAdPreloader.isAdAvailable(adUnitId) }
Java
private boolean isAdAvailable(String adUnitId) { return AppOpenAdPreloader.isAdAvailable(adUnitId); }
ไม่บังคับ: ตั้งค่าขนาดบัฟเฟอร์
ขนาดบัฟเฟอร์จะควบคุมจำนวนโฆษณาที่โหลดล่วงหน้าซึ่งจัดเก็บไว้ในหน่วยความจำ โดยค่าเริ่มต้น Google จะเพิ่มประสิทธิภาพขนาดบัฟเฟอร์เพื่อปรับสมดุลการใช้หน่วยความจำและความหน่วงในการแสดงโฆษณา คุณกำหนดขนาดบัฟเฟอร์ที่กำหนดเองเพื่อเพิ่มจำนวนโฆษณาที่เก็บไว้ใน หน่วยความจำได้ เราขอแนะนำให้ใช้ขนาดบัฟเฟอร์เป็นโฆษณาที่โหลดล่วงหน้า 2 รายการ
ตัวอย่างต่อไปนี้แสดงวิธีตั้งค่าขนาดบัฟเฟอร์
Kotlin
val adRequest = AdRequest.Builder(adUnitId).build() // Define a PreloadConfiguration and set the buffer size to 2 preloaded ads. val preloadConfig = PreloadConfiguration(adRequest, bufferSize = 2) AppOpenAdPreloader.start(adUnitId, preloadConfig)
Java
AdRequest adRequest = new AdRequest.Builder(adUnitId).build(); // Define a PreloadConfiguration and set the buffer size to 2 preloaded ads. PreloadConfiguration preloadConfig = new PreloadConfiguration(adRequest, 2); AppOpenAdPreloader.start(adUnitId, preloadConfig);
ขีดจำกัดของแคชที่โหลดล่วงหน้า
GMA Next-Gen SDK บังคับใช้ขีดจํากัดระดับแอปสําหรับจํานวนโฆษณาที่โหลดล่วงหน้าทั้งหมด ในหน่วยโฆษณาทั้งหมดและรหัสการโหลดล่วงหน้า
- ขีดจำกัดเริ่มต้น: Google จะเก็บโฆษณาที่โหลดล่วงหน้าไว้ในหน่วยความจำสูงสุด 6 รายการ ขีดจำกัดนี้ใช้ร่วมกันในทุกรูปแบบและรหัสการโหลดล่วงหน้า
- เราขอแนะนำให้ตั้งค่าขนาดบัฟเฟอร์เป็น 2 สำหรับรหัสการโหลดล่วงหน้าแต่ละรายการ
ไม่บังคับ: หยุดโหลดโฆษณาล่วงหน้า
หากไม่ต้องการแสดงโฆษณาสำหรับรหัสการโหลดล่วงหน้าหนึ่งๆ อีกในเซสชัน
คุณสามารถหยุดการโหลดโฆษณาล่วงหน้าได้ หากต้องการหยุดโหลดโฆษณาสำหรับรหัสการโหลดล่วงหน้าหนึ่งๆ
ให้เรียกใช้เมธอด destroy โดยใช้รหัสการโหลดล่วงหน้า การเรียกใช้เมธอด
destroy จะนำโฆษณาที่โหลดล่วงหน้าทั้งหมดที่เชื่อมโยง
กับรหัสการโหลดล่วงหน้าออกจากแคช
ตัวอย่างต่อไปนี้แสดงวิธีหยุดการโหลดโฆษณาล่วงหน้า
Kotlin
private fun stopPreloading(adUnitId: String) { // Stops the preloading and destroy preloaded ads. AppOpenAdPreloader.destroy(adUnitId) }
Java
private void stopPreloading(String adUnitId) { // Stops the preloading and destroy preloaded ads. AppOpenAdPreloader.destroy(adUnitId); }
ไม่บังคับ: อ่านข้อมูลคำตอบ
อ่านข้อมูลการตอบกลับของโฆษณาที่โหลดล่วงหน้าถัดไปโดยไม่ต้องนำโฆษณาออกจากแคช
ตัวอย่างต่อไปนี้แสดงวิธีอ่านข้อมูลการตอบกลับของโฆษณาที่โหลดล่วงหน้าถัดไป
Kotlin
val responseInfo = AppOpenAdPreloader.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 = AppOpenAdPreloader.peekAdResponseInfo(preloadId); if (responseInfo == null) { Log.e(TAG, "Failed to peek ad response info."); return; } Log.d(TAG, "Peeked ad response ID: " + responseInfo.getResponseId());
จัดการ Cold Start และหน้าจอโหลด
Cold Start จะเกิดขึ้นเมื่อแอปเปิดจากดิสก์ และ Warm Start จะเกิดขึ้น เมื่อคุณเปิดแอปจากหน่วยความจำอีกครั้ง ในระหว่างการเริ่มต้นแบบ Cold Start คุณจะไม่มีโฆษณาที่โหลดไว้ล่วงหน้าเพื่อแสดงทันที ในระหว่าง Warm Start คุณอาจยังมีโฆษณาที่โหลดไว้ล่วงหน้าพร้อมแสดง
ในระหว่าง Cold Start ผู้ใช้อาจโต้ตอบกับแอปก่อนที่แอปจะโหลดและ แสดงโฆษณา เพื่อหลีกเลี่ยงการมอบประสบการณ์ที่ไม่ดีแก่ผู้ใช้ ให้แสดงโฆษณาเปิดแอปใน Cold Start จากหน้าจอการโหลดอย่างเคร่งครัดขณะที่โหลดชิ้นงานของแอป หากการโหลดชิ้นงาน เสร็จสมบูรณ์และผู้ใช้เห็นเนื้อหาหลักก่อนที่โฆษณาจะโหลดเสร็จ อย่าแสดง โฆษณา
คำแนะนำ
ทำตามคำแนะนำต่อไปนี้สำหรับโฆษณาเปิดแอป
- อย่าแสดงโฆษณาเปิดแอปเมื่อเริ่มแอปเป็นครั้งแรก
- หากหน้าจอการโหลดโหลดเสร็จขณะที่โฆษณากำลังแสดง ให้ปิดหน้าจอการโหลดในเมธอด Callback เมื่อปิดโฆษณา
- โฆษณาเปิดแอปจะหมดอายุ 4 ชั่วโมงหลังจากโหลด อย่าแสดงโฆษณาเปิดแอปที่ โหลดมานานกว่า 4 ชั่วโมง