โฆษณาคั่นระหว่างหน้าเป็นโฆษณาแบบเต็มหน้าจอที่ครอบคลุมอินเทอร์เฟซแอปจนถึง ปิดโดยผู้ใช้ โฆษณาเหล่านี้มักแสดงที่จุดเปลี่ยนตามปกติใน การไหลเวียนของแอป เช่น ระหว่างกิจกรรมต่างๆ หรือระหว่างการหยุดชั่วคราวระหว่าง เลเวลต่างๆ ในเกม เมื่อแอปแสดงโฆษณาคั่นระหว่างหน้า ผู้ใช้จะมีตัวเลือก เพื่อแตะที่โฆษณาและไปยังปลายทาง หรือปิดโฆษณาแล้วกลับมาที่เดิม กับแอป กรณีศึกษา
คู่มือนี้จะแสดงวิธีผสานรวมโฆษณาคั่นระหว่างหน้าในแอป Android และ iOS โดยใช้ C++ SDK โฆษณาบนอุปกรณ์เคลื่อนที่ของ Google
ข้อกำหนดเบื้องต้น
- ดำเนินการเริ่มต้นใช้งานให้เสร็จสมบูรณ์
- (Android เท่านั้น) ความคุ้นเคยในการทำงานร่วมกับ JNI
jobject
(โปรดดู เคล็ดลับเกี่ยวกับ Android JNI)
ทดสอบด้วยโฆษณาทดสอบเสมอ
เมื่อสร้างและทดสอบแอป โปรดใช้โฆษณาทดสอบแทน โฆษณาที่ใช้งานจริง หากไม่ดำเนินการ บัญชีจะถูกระงับ
วิธีที่ง่ายที่สุดในการโหลดโฆษณาทดสอบคือการใช้รหัสหน่วยโฆษณาทดสอบโดยเฉพาะของเรา โฆษณาคั่นระหว่างหน้า ซึ่งจะแตกต่างกันไปตามแพลตฟอร์มอุปกรณ์
- Android :
ca-app-pub-3940256099942544/1033173712
- iOS:
ca-app-pub-3940256099942544/4411468910
โดยปรับแต่งเป็นพิเศษให้ส่งคืนโฆษณาทดสอบสำหรับทุกคำขอ และ คุณสามารถใช้โค้ดนี้ในแอปของคุณเองขณะเขียนโค้ด ทดสอบ และแก้ไขข้อบกพร่อง ตรวจสอบให้แน่ใจว่าคุณแทนที่ด้วยรหัสหน่วยโฆษณาของคุณเองก่อนที่จะเผยแพร่ แอป
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับวิธีการทำงานของโฆษณาทดสอบของ SDK โฆษณาบนอุปกรณ์เคลื่อนที่ โปรดดู Test Ads
การใช้งาน
ขั้นตอนหลักในการผสานรวมโฆษณาคั่นระหว่างหน้ามีดังนี้
- โหลดโฆษณา
- ลงทะเบียนสำหรับการติดต่อกลับ
- แสดงโฆษณาและจัดการเหตุการณ์ในวงจรของโฆษณา
กำหนดค่า InterstitialAd
โฆษณาคั่นระหว่างหน้าจะแสดงในรูปแบบ InterstitialAd
ออบเจ็กต์ ดังนั้นขั้นตอนแรก
การผสานรวมโฆษณาคั่นระหว่างหน้าเข้ากับแอปก็คือการสร้างและเริ่มต้น
ออบเจ็กต์ InterstitialAd
รายการ
เพิ่มส่วนหัวต่อไปนี้ในโค้ด C++ ของแอป
#include "firebase/gma/interstial_ad.h"
ประกาศและสร้างอินสแตนซ์ของออบเจ็กต์
InterstitialAd
firebase::gma::InterstitialAd* interstitial_ad; interstitial_ad = new firebase::gma::InterstitialAd();
เริ่มต้นอินสแตนซ์
InterstitialAd
โดยใช้แคสต์มุมมองระดับบนสุดไปยัง ประเภทAdParent
มุมมองระดับบนสุดเป็นการอ้างอิงjobject
ของ JNI สำหรับ 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
ที่
ใช้สัญญาซื้อขายล่วงหน้าเพื่อตรวจสอบสถานะความสมบูรณ์ของเมธอด
การโทร
โหลดโฆษณา
การโหลดโฆษณาดำเนินการได้โดยใช้เมธอด 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()
และจะได้รับ
Callback เมื่อโฆษณานำเสนอสำเร็จหรือไม่สำเร็จ รวมถึงเมื่อ
ปิดแล้ว
โค้ดต่อไปนี้แสดงวิธีขยายชั้นเรียนและกำหนดให้กับโฆษณา
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();
แนวทางปฏิบัติแนะนำ
- พิจารณาว่าโฆษณาคั่นระหว่างหน้าเป็นโฆษณาประเภทที่เหมาะสมกับแอปของคุณหรือไม่
- โฆษณาคั่นระหว่างหน้าทำงานได้ดีที่สุดในแอปที่มีจุดเปลี่ยนที่เป็นธรรมชาติ บทสรุปของงานภายในแอป เช่น การแชร์รูปภาพหรือการเล่นเกม ทำให้เกิดจุดดังกล่าว เนื่องจากผู้ใช้คาดหวังว่าจะมีช่วงพักใน ก็สามารถนำเสนอโฆษณาคั่นระหว่างหน้าได้ง่ายๆ โดยไม่ขัดจังหวะ ประสบการณ์การใช้งาน ตรวจสอบให้แน่ใจว่าคุณพิจารณาว่าคุณต้องการไปที่จุดใดในเวิร์กโฟลว์ของแอป โฆษณาคั่นระหว่างหน้า Display และวิธีการตอบสนองของผู้ใช้
- อย่าลืมหยุดการดำเนินการไว้ชั่วคราวเมื่อแสดงโฆษณาคั่นระหว่างหน้า
- โฆษณาคั่นระหว่างหน้ามีหลายประเภท ได้แก่ แบบข้อความ รูปภาพ
วิดีโอ และอื่นๆ คุณต้องตรวจสอบว่าเมื่อแอปแสดง
โฆษณาคั่นระหว่างหน้าได้ ก็ยังระงับการใช้ทรัพยากรบางอย่างเพื่ออนุญาตให้โฆษณา
ใช้ประโยชน์จากส่วนนี้ ตัวอย่างเช่น เมื่อคุณโทรออกเพื่อแสดง
โฆษณาคั่นระหว่างหน้า อย่าลืมหยุดเอาต์พุตเสียงที่แอปของคุณสร้างไว้ชั่วคราว
คุณเล่นเสียงต่อได้ในเมธอด
OnAdDismissedFullScreenContent
ของFullScreenContentListener
ที่ติดตั้งของคุณ ซึ่งจะถูกเรียกเมื่อผู้ใช้ โต้ตอบกับโฆษณาเสร็จแล้ว นอกจากนี้ ควรพิจารณาการหยุดใช้งานชั่วคราว งานด้านการคำนวณหนักๆ (เช่น Game Loop) ในขณะที่โฆษณา แสดงอยู่ ซึ่งจะช่วยให้ผู้ใช้ไม่พบประสบการณ์ที่ช้าหรือ ภาพกราฟิกไม่ตอบสนองหรือวิดีโอกระตุก - เผื่อเวลาโหลดให้เพียงพอ
- คุณควรตรวจสอบว่าได้แสดงโฆษณาคั่นระหว่างหน้าที่ ในเวลาที่เหมาะสม คุณควรตรวจสอบว่าผู้ใช้ไม่ต้องรอ ให้โหลด การโหลดโฆษณาล่วงหน้าก่อนที่คุณจะตั้งใจจะแสดงจะช่วยให้ ให้แอปมีโฆษณาคั่นระหว่างหน้าที่โหลดอย่างสมบูรณ์ พร้อมใช้งานทันที เพื่อแสดงขึ้นมา
- อย่าแสดงโฆษณาต่อผู้ใช้จำนวนมาก
- แม้ว่าการเพิ่มความถี่ของโฆษณาคั่นระหว่างหน้าในแอปอาจดูเหมือนเป็นวิธีที่ยอดเยี่ยมในการเพิ่มรายได้ แต่ก็อาจทำให้ประสบการณ์ของผู้ใช้แย่ลงและอัตราการคลิกผ่านลดลงด้วย ตรวจสอบว่าผู้ใช้ไม่ได้รับการขัดจังหวะบ่อยจนทำให้ใช้งานแอปของคุณไม่ได้
- อย่าใช้การโหลดที่เสร็จสมบูรณ์ในอนาคตเพื่อแสดงโฆษณาคั่นระหว่างหน้า
- ซึ่งอาจทำให้ผู้ใช้ได้รับประสบการณ์การใช้งานที่ไม่ดี แต่ให้โหลดโฆษณาไว้ล่วงหน้าก่อน ต้องแสดงให้ดู
แหล่งข้อมูลเพิ่มเติม
ตัวอย่างใน GitHub
- ดูซอร์สโค้ดของตัวอย่างของเรา แอป Quickstart ใน GitHub
วิดีโอแนะนำ Mobile Ads Garage
เรื่องราวความสำเร็จ
ขั้นตอนถัดไป
- สร้างหน่วยโฆษณาคั่นระหว่างหน้าของคุณเองใน UI ของ AdMob หากยังไม่ได้สร้าง
- ดูข้อมูลเกี่ยวกับการกำหนดเป้าหมายโฆษณา หลักเกณฑ์โฆษณาคั่นระหว่างหน้า