โฆษณาคั่นระหว่างหน้าเป็นโฆษณาแบบเต็มหน้าจอที่ครอบคลุมอินเทอร์เฟซของแอปจนกว่าผู้ใช้จะปิดทําการ มักจะแสดงที่จุดเปลี่ยนหน้าปกติในโฟลวของแอป เช่น ระหว่างกิจกรรมหรือระหว่างการหยุดชั่วคราวระหว่างเปลี่ยนด่านในเกม เมื่อแอปแสดงโฆษณาคั่นระหว่างหน้า ผู้ใช้จะมีตัวเลือกในการแตะที่โฆษณาดังกล่าวและดําเนินการต่อไปยังปลายทางหรือปิดและกลับไปยังแอป กรณีศึกษา
คู่มือนี้แสดงวิธีผสานรวมโฆษณาคั่นระหว่างหน้าเข้าไปในแอป Android และ iOS โดยใช้ SDK โฆษณาบนอุปกรณ์เคลื่อนที่ C++ ของ Google
สิ่งที่ต้องดำเนินการก่อน
- ทําตามขั้นตอนเริ่มต้นใช้งานให้เสร็จสมบูรณ์
- (Android เท่านั้น) ที่คุณคุ้นเคยกับการอ้างอิง JNI
jobject
(ดูเคล็ดลับ Android JNI)
ทดสอบด้วยโฆษณาทดสอบเสมอ
เมื่อสร้างและทดสอบแอป อย่าลืมใช้โฆษณาทดสอบแทนที่จะใช้โฆษณาจริง หากคุณไม่ทําเช่นนั้น เราอาจระงับบัญชีของคุณ
วิธีที่ง่ายที่สุดในการโหลดโฆษณาทดสอบคือการใช้รหัสหน่วยโฆษณาทดสอบโดยเฉพาะสําหรับโฆษณาคั่นระหว่างหน้า ซึ่งจะแตกต่างกันไปตามแพลตฟอร์มอุปกรณ์นั้นๆ
- Android :
ca-app-pub-3940256099942544/1033173712
- iOS:
ca-app-pub-3940256099942544/4411468910
โดยได้รับการกําหนดค่าเป็นพิเศษให้ส่งกลับโฆษณาทดสอบสําหรับคําขอทุกรายการ และคุณจะใช้แอปพลิเคชันนี้ในแอปของคุณเองขณะที่เขียนโค้ด ทดสอบ และแก้ไขข้อบกพร่องได้ เพียงแทนที่ด้วยรหัสหน่วยโฆษณาของคุณเองก่อนที่จะเผยแพร่แอป
สําหรับข้อมูลเพิ่มเติมเกี่ยวกับวิธีการทํางานของโฆษณาทดสอบของ 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
หรือตัวชี้ไปยัง iOSUIView
// 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
ได้ที่ใช้ Futures เพื่อตรวจสอบสถานะการเสร็จสมบูรณ์ของเมธอดเมธอด
โหลดโฆษณา
การโหลดโฆษณาทําได้โดยใช้วิธีการ 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
เพื่อกําหนดว่าเมื่อใดที่โฆษณาจะแสดงเนื้อหาแบบเต็มหน้าจอ แต่ในอนาคต Show()
จะส่งสัญญาณให้เห็นว่ามีการแสดงโฆษณาเมื่อใด
firebase::Future<void> result = interstitial_ad->Show();
แนวทางปฏิบัติแนะนำ
- พิจารณาว่าโฆษณาคั่นระหว่างหน้าเป็นประเภทโฆษณาที่เหมาะกับแอปของคุณหรือไม่
- โฆษณาคั่นระหว่างหน้าทํางานได้ดีที่สุดในแอปที่มีจุดเปลี่ยนที่เป็นธรรมชาติ การสรุปงานภายในแอป เช่น การแชร์รูปภาพหรือการเล่นเกมผ่านด่านหนึ่งๆ ทําให้เกิดจุดดังกล่าว เนื่องจากผู้ใช้ต้องการให้เกิดการแบ่งช่วงการดําเนินการ จึงง่ายที่จะนําเสนอโฆษณาคั่นระหว่างหน้าโดยไม่ขัดจังหวะประสบการณ์ของผู้ใช้ อย่าลืมพิจารณาว่าจุดใดในเวิร์กโฟลว์ของแอปที่คุณจะแสดงโฆษณาคั่นระหว่างหน้า และวิธีที่ผู้ใช้มีแนวโน้มที่จะตอบสนอง
- อย่าลืมหยุดการกระทํานี้ชั่วคราวเมื่อแสดงโฆษณาคั่นระหว่างหน้า
- โฆษณาคั่นระหว่างหน้ามีหลายประเภท เช่น ข้อความ รูปภาพ วิดีโอ และอื่นๆ คุณต้องตรวจสอบว่าเมื่อแอปแสดงโฆษณาคั่นระหว่างหน้า แอปก็จะระงับการใช้ทรัพยากรบางส่วนด้วยเพื่อให้โฆษณาได้รับประโยชน์ ตัวอย่างเช่น เมื่อคุณโทรให้แสดงโฆษณาคั่นระหว่างหน้า อย่าลืมหยุดเอาต์พุตเสียงที่แอปสร้างขึ้นชั่วคราว
คุณสามารถเล่นเสียงต่อในเมธอด
OnAdDismissedFullScreenContent
ของFullScreenContentListener
ที่ติดตั้งไว้ ซึ่งจะเรียกใช้เมื่อผู้ใช้โต้ตอบกับโฆษณาเสร็จแล้ว นอกจากนี้ ให้พิจารณาหยุดงานด้านการคํานวณ (เช่น การวนรอบเกม) ชั่วคราวไว้ชั่วคราวในระหว่างที่แสดงโฆษณา วิธีนี้จะช่วยให้มั่นใจได้ว่าผู้ใช้จะไม่พบกราฟิกที่ช้าหรือไม่ตอบสนอง หรือวิดีโอกระตุก - รอให้เวลาในการโหลดนานพอ
- สิ่งที่สําคัญอีกอย่างคือการตรวจสอบว่าได้แสดงโฆษณาคั่นระหว่างหน้าในช่วงเวลาที่เหมาะสมแล้ว เป็นสิ่งสําคัญที่จะช่วยให้ผู้ใช้ไม่ต้องรอให้โฆษณาโหลดขึ้นมา การโหลดโฆษณาล่วงหน้าก่อนที่จะแสดง จะช่วยให้แน่ใจว่า แอปมีโฆษณาคั่นระหว่างหน้าที่โหลดเสร็จแล้วในเวลาที่พร้อมแสดงโฆษณา
- อย่าแสดงโฆษณาต่อผู้ใช้จํานวนมาก
- แม้ว่าการเพิ่มความถี่ของโฆษณาคั่นระหว่างหน้าในแอปอาจดูเป็นวิธีที่ดีในการเพิ่มรายได้ แต่ก็อาจลดประสบการณ์ของผู้ใช้และทําให้อัตราการคลิกผ่านลดลงด้วย ตรวจสอบว่าผู้ใช้ไม่ได้รบกวนบ่อยเกินไป เพราะพวกเขาจะไม่สามารถเพลิดเพลินไปกับการใช้แอปของคุณได้อีกต่อไป
- อย่าใช้การโหลดเสร็จสมบูรณ์ในอนาคตเพื่อแสดงโฆษณาคั่นระหว่างหน้า
- วิธีนี้ทําให้ผู้ใช้ได้รับประสบการณ์ที่ไม่ดี แต่ให้โหลดโฆษณาล่วงหน้าก่อนที่จะแสดง
แหล่งข้อมูลเพิ่มเติม
ตัวอย่างใน GitHub
- ดูซอร์สโค้ดของแอปเริ่มต้นอย่างรวดเร็วใน GitHub
วิดีโอแนะนําเกี่ยวกับวิดีโอ Garage Mobile
เรื่องราวความสำเร็จ
ขั้นตอนถัดไป
- สร้างหน่วยโฆษณาคั่นระหว่างหน้าใน UI ของ AdMob หากยังไม่ได้สร้าง
- ดูข้อมูลเกี่ยวกับการกําหนดเป้าหมายโฆษณาและหลักเกณฑ์โฆษณาคั่นระหว่างหน้า