โฆษณาคั่นระหว่างหน้าเป็นโฆษณาแบบเต็มหน้าจอที่ครอบคลุมอินเทอร์เฟซของแอปจนกว่าผู้ใช้จะปิด โดยปกติแล้วโฆษณาเหล่านี้จะแสดงที่จุดเปลี่ยนหน้าปกติในขณะที่ใช้งานแอป เช่น ระหว่างทำกิจกรรมต่างๆ หรือในช่วงหยุดชั่วคราวระหว่างเปลี่ยนด่านในเกม เมื่อแอปแสดงโฆษณาคั่นระหว่างหน้า ผู้ใช้จะมีตัวเลือก ว่าจะแตะโฆษณาและไปยังปลายทาง หรือปิดโฆษณาและกลับ ไปที่แอป กรณีศึกษา
คู่มือนี้แสดงวิธีผสานรวมโฆษณาคั่นระหว่างหน้าในแอป Android และ iOS โดยใช้ Google Mobile Ads C++ SDK
ข้อกำหนดเบื้องต้น
- ทำตามขั้นตอนเริ่มต้นใช้งาน
- (Android เท่านั้น) คุ้นเคยกับการทำงานกับข้อมูลอ้างอิง JNI
jobject
(ดูเคล็ดลับ JNI ของ Android)
ทดสอบด้วยโฆษณาทดสอบเสมอ
เมื่อสร้างและทดสอบแอป โปรดใช้โฆษณาทดสอบแทน โฆษณาจริงที่ใช้งานจริง หากไม่ดำเนินการดังกล่าวอาจส่งผลให้บัญชีถูกระงับ
วิธีที่ง่ายที่สุดในการโหลดโฆษณาทดสอบคือการใช้รหัสหน่วยโฆษณาทดสอบเฉพาะสำหรับ โฆษณาคั่นระหว่างหน้า ซึ่งจะแตกต่างกันไปตามแพลตฟอร์มของอุปกรณ์
- Android :
ca-app-pub-3940256099942544/1033173712
- iOS:
ca-app-pub-3940256099942544/4411468910
โดยได้รับการกำหนดค่าเป็นพิเศษให้แสดงโฆษณาทดสอบสำหรับทุกคำขอ และ คุณสามารถใช้ในแอปของคุณเองได้ขณะเขียนโค้ด ทดสอบ และแก้ไขข้อบกพร่อง เพียงอย่าลืมแทนที่ด้วยรหัสหน่วยโฆษณาของคุณเองก่อนเผยแพร่แอป
ดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีทำงานของโฆษณาทดสอบของ Mobile Ads SDK ได้ที่ โฆษณาทดสอบ
การใช้งาน
ขั้นตอนหลักในการผสานรวมโฆษณาคั่นระหว่างหน้ามีดังนี้
- โหลดโฆษณา
- ลงทะเบียนรับสายโทรกลับ
- แสดงโฆษณาและจัดการเหตุการณ์วงจรของโฆษณา
กำหนดค่า InterstitialAd
โฆษณาคั่นระหว่างหน้าจะแสดงในออบเจ็กต์ InterstitialAd
ดังนั้นขั้นตอนแรก
ในการผสานรวมโฆษณาคั่นระหว่างหน้าเข้ากับแอปคือการสร้างและเริ่มต้นออบเจ็กต์
InterstitialAd
เพิ่มส่วนหัวต่อไปนี้ลงในโค้ด C++ ของแอป
#include "firebase/gma/interstial_ad.h"
ประกาศและสร้างอินสแตนซ์ของ
InterstitialAd
ออบเจ็กต์firebase::gma::InterstitialAd* interstitial_ad; interstitial_ad = new firebase::gma::InterstitialAd();
เริ่มต้นอินสแตนซ์
InterstitialAd
โดยใช้การแคสต์มุมมองหลักไปยังประเภทAdParent
มุมมองระดับบนสุดคือการอ้างอิง JNIjobject
ไปยัง AndroidActivity
หรือตัวชี้ไปยังUIView
ของ iOS// my_ad_parent is a jobject reference to an Android Activity or // a pointer to an iOS UIView. firebase::gma::AdParent ad_parent = static_cast<firebase::gma::AdParent>(my_ad_parent); firebase::Future<void> result = interstitial_ad->Initialize(ad_parent);
คุณสามารถตรวจสอบสถานะของการดำเนินการเริ่มต้นเป็นระยะๆ โดยเรียกใช้
InitializeLastResult()
ในออบเจ็กต์InterstitialAd
แทนการเก็บรักษาอนาคตเป็นตัวแปร ซึ่งอาจเป็นประโยชน์ ในการติดตามกระบวนการเริ่มต้นใน Game Loop ทั่วโลก// Monitor the status of the future in your game loop: firebase::Future<void> result = interstitial_ad->InitializeLastResult(); if (result.status() == firebase::kFutureStatusComplete) { // Initialization completed. if(future.error() == firebase::gma::kAdErrorCodeNone) { // Initialization successful. } else { // An error has occurred. } } else { // Initialization on-going. }
ดูข้อมูลเพิ่มเติมเกี่ยวกับการทำงานกับ firebase::Future
ได้ที่
ใช้ Future เพื่อตรวจสอบสถานะการดำเนินการของเมธอด
การเรียก
โหลดโฆษณา
การโหลดโฆษณาจะทำได้โดยใช้เมธอด LoadAd()
ในออบเจ็กต์
InterstitialAd
เมธอดการโหลดกำหนดให้คุณต้องเริ่มต้นออบเจ็กต์
InterstitialAd
และมีรหัสหน่วยโฆษณาและออบเจ็กต์ AdRequest
ระบบจะแสดง firebase::Future
ซึ่งคุณสามารถใช้เพื่อตรวจสอบสถานะ
และผลลัพธ์ของการดำเนินการโหลด
โค้ดต่อไปนี้แสดงวิธีโหลดโฆษณาเมื่อInterstitialAd
เริ่มต้น
เรียบร้อยแล้ว
firebase::gma::AdRequest ad_request;
firebase::Future<firebase::gma::AdResult> load_ad_result;
load_ad_result = interstitial_ad->LoadAd(interstitial_ad_unit_id, ad_request);
ลงทะเบียนเพื่อรับการโทรกลับ
คุณต้องขยายคลาส FullScreenContentListener
เพื่อรับ
การแจ้งเตือนเกี่ยวกับการแสดงโฆษณาคั่นระหว่างหน้าและเหตุการณ์วงจรการใช้งาน คุณสามารถลงทะเบียนคลาสย่อย FullScreenContentListener
ที่กำหนดเองได้ผ่านเมธอด InterstitialAd::SetFullScreenContentListener()
และจะได้รับการเรียกกลับเมื่อโฆษณาแสดงสำเร็จหรือไม่สำเร็จ รวมถึงเมื่อมีการปิดโฆษณา
โค้ดต่อไปนี้แสดงวิธีขยายคลาสและกำหนดให้กับโฆษณา
class ExampleFullScreenContentListener : public firebase::gma::FullScreenContentListener { public: ExampleFullScreenContentListener() {} void OnAdClicked() override { // This method is invoked when the user clicks the ad. } void OnAdDismissedFullScreenContent() override { // This method is invoked when the ad dismisses full screen content. } void OnAdFailedToShowFullScreenContent(const AdError& error) override { // This method is invoked when the ad failed to show full screen content. // Details about the error are contained within the AdError parameter. } void OnAdImpression() override { // This method is invoked when an impression is recorded for an ad. } void OnAdShowedFullScreenContent() override { // This method is invoked when the ad showed its full screen content. } }; ExampleFullScreenContentListener* full_screen_content_listener = new ExampleFullScreenContentListener(); interstitial_ad->SetFullScreenContentListener(full_screen_content_listener);
InterstitialAd
เป็นออบเจ็กต์ที่ใช้ได้ครั้งเดียว ซึ่งหมายความว่าเมื่อแสดงโฆษณาคั่นระหว่างหน้าแล้ว จะแสดงอีกไม่ได้ แนวทางปฏิบัติแนะนำคือการโหลดโฆษณาคั่นระหว่างหน้าอีกรายการในเมธอด OnAdDismissedFullScreenContent()
ของ FullScreenContentListener
เพื่อให้โฆษณาคั่นระหว่างหน้าถัดไปเริ่มโหลดทันทีที่ปิดโฆษณาคั่นระหว่างหน้าก่อนหน้า
แสดงโฆษณา
โฆษณาคั่นระหว่างหน้าควรแสดงในช่วงหยุดชั่วคราวตามปกติในขณะที่ใช้งานแอป
ตัวอย่างที่ดีคือระหว่างเปลี่ยนด่านในเกม หรือหลังจากที่ผู้ใช้ทํางานเสร็จ
แม้ว่า FullScreenContentListener
จะใช้เพื่อระบุเวลาที่โฆษณาแสดงเนื้อหาแบบเต็มหน้าจอได้ แต่ Future ที่ Show()
ส่งคืนจะยังส่งสัญญาณเมื่อโฆษณาแสดงสำเร็จด้วย
firebase::Future<void> result = interstitial_ad->Show();
แนวทางปฏิบัติแนะนำ
- พิจารณาว่าโฆษณาคั่นระหว่างหน้าเป็นประเภทโฆษณาที่เหมาะสมกับแอปของคุณหรือไม่
- โฆษณาคั่นระหว่างหน้าทำงานได้ดีที่สุดในแอปที่มีจุดเปลี่ยนตามปกติ การทำงานเสร็จภายในแอป เช่น การแชร์รูปภาพหรือเล่นเกมผ่านด่าน จะสร้างจุดดังกล่าว เนื่องจากผู้ใช้คาดหวังว่าจะได้พักจากการกระทำ จึงนำเสนอโฆษณาคั่นระหว่างหน้าได้ง่ายโดยไม่รบกวนประสบการณ์ของผู้ใช้ โปรดพิจารณาว่าคุณจะแสดงโฆษณาคั่นระหว่างหน้าที่จุดใดในเวิร์กโฟลว์ของแอป และผู้ใช้มีแนวโน้มที่จะตอบสนองอย่างไร
- อย่าลืมหยุดการดำเนินการชั่วคราวเมื่อแสดงโฆษณาคั่นระหว่างหน้า
- โฆษณาคั่นระหว่างหน้ามีหลายประเภท ได้แก่ แบบข้อความ รูปภาพ
วิดีโอ และอื่นๆ คุณควรตรวจสอบว่าเมื่อแอปแสดงโฆษณาคั่นกลาง แอปจะระงับการใช้ทรัพยากรบางอย่างด้วย เพื่อให้โฆษณาสามารถใช้ประโยชน์จากทรัพยากรเหล่านั้นได้ เช่น เมื่อเรียกใช้เพื่อแสดงโฆษณาคั่นระหว่างหน้า ให้หยุดเอาต์พุตเสียงใดๆ ที่แอปของคุณสร้างขึ้นชั่วคราว
คุณสามารถเล่นเสียงต่อได้ในเมธอด
OnAdDismissedFullScreenContent
ของFullScreenContentListener
ที่ติดตั้งไว้ ซึ่งจะเรียกใช้เมื่อผู้ใช้ โต้ตอบกับโฆษณาเสร็จแล้ว นอกจากนี้ ให้พิจารณาหยุด งานการคำนวณที่ซับซ้อน (เช่น ลูปเกม) ชั่วคราวขณะที่โฆษณา แสดงอยู่ ซึ่งจะช่วยให้ผู้ใช้ไม่พบกราฟิกที่ช้าหรือไม่ตอบสนองหรือวิดีโอที่กระตุก - เผื่อเวลาในการโหลดให้เพียงพอ
- เช่นเดียวกับที่การแสดงโฆษณาคั่นระหว่างหน้าในเวลาที่เหมาะสมเป็นสิ่งสำคัญ การตรวจสอบว่าผู้ใช้ไม่ต้องรอให้โฆษณาโหลดก็เป็นสิ่งสำคัญเช่นกัน การโหลดโฆษณาล่วงหน้าก่อนที่คุณจะตั้งใจแสดงจะช่วยให้มั่นใจได้ว่า แอปของคุณมีโฆษณาคั่นระหว่างหน้าที่โหลดเต็มแล้วพร้อมแสดงเมื่อถึงเวลา
- อย่าแสดงโฆษณาต่อผู้ใช้มากเกินไป
- แม้ว่าการเพิ่มความถี่ในการแสดงโฆษณาคั่นระหว่างหน้าในแอปอาจดูเหมือน เป็นวิธีที่ยอดเยี่ยมในการเพิ่มรายได้ แต่ก็อาจทำให้ประสบการณ์ของผู้ใช้แย่ลง และลดอัตราการคลิกผ่านได้เช่นกัน ตรวจสอบว่าผู้ใช้ไม่ถูกขัดจังหวะบ่อยเกินไปจนไม่สามารถเพลิดเพลินกับการใช้แอปได้
- อย่าใช้ฟิวเจอร์การโหลดเสร็จสมบูรณ์เพื่อแสดงโฆษณาคั่นระหว่างหน้า
- ซึ่งอาจส่งผลให้ผู้ใช้ได้รับประสบการณ์การใช้งานที่ไม่ดี แต่ให้โหลดโฆษณาล่วงหน้าก่อนที่คุณ จะต้องแสดง
แหล่งข้อมูลเพิ่มเติม
ตัวอย่างใน GitHub
- ดูซอร์สโค้ดของ แอปเริ่มต้นอย่างรวดเร็ว ใน GitHub
วิดีโอสอนการใช้งาน Mobile Ads Garage
เรื่องราวความสำเร็จ
ขั้นตอนถัดไป
- สร้างหน่วยโฆษณาคั่นระหว่างหน้าของคุณเองใน UI ของ AdMob หากยังไม่ได้สร้าง
- ดูข้อมูลเกี่ยวกับการกำหนดเป้าหมายโฆษณาและหลักเกณฑ์ของโฆษณาคั่นระหว่างหน้า