โฆษณาคั่นระหว่างหน้า


โฆษณาคั่นระหว่างหน้าคือโฆษณาแบบเต็มหน้าจอที่ครอบคลุมอินเทอร์เฟซของแอปจนกว่าผู้ใช้จะปิด โฆษณาเหล่านี้มักจะแสดงที่จุดเปลี่ยนหน้าปกติในขณะที่ใช้งานแอป เช่น ระหว่างทำกิจกรรมต่างๆ หรือในช่วงหยุดชั่วคราวระหว่างเปลี่ยนด่านในเกม เมื่อแอปแสดงโฆษณาคั่นระหว่างหน้า ผู้ใช้จะมีตัวเลือกในการแตะโฆษณาเพื่อไปยังปลายทางหรือปิดโฆษณาและกลับไปที่แอปกรณีศึกษา

คู่มือนี้จะแสดงวิธีผสานรวมโฆษณาคั่นระหว่างหน้าเข้ากับแอป Android และ iOS โดยใช้ Google Mobile Ads C++ SDK

ข้อกำหนดเบื้องต้น

ทดสอบด้วยโฆษณาทดสอบเสมอ

เมื่อสร้างและทดสอบแอป โปรดใช้โฆษณาทดสอบแทนโฆษณาเวอร์ชันที่ใช้งานจริง หากไม่ดำเนินการดังกล่าวอาจส่งผลให้บัญชีถูกระงับ

วิธีที่ง่ายที่สุดในการโหลดโฆษณาทดสอบคือการใช้รหัสหน่วยโฆษณาทดสอบเฉพาะสําหรับโฆษณาคั่นระหว่างหน้า ซึ่งจะแตกต่างกันไปตามแพลตฟอร์มอุปกรณ์ ดังนี้

  • Android : ca-app-pub-3940256099942544/1033173712
  • iOS: ca-app-pub-3940256099942544/4411468910

โฆษณาเหล่านี้ได้รับการกําหนดค่ามาเป็นพิเศษให้แสดงโฆษณาทดสอบสําหรับคําขอทุกรายการ และคุณใช้โฆษณาเหล่านี้ในแอปของคุณเองได้ขณะเขียนโค้ด ทดสอบ และแก้ไขข้อบกพร่อง เพียงอย่าลืมแทนที่รหัสด้วยรหัสหน่วยโฆษณาของคุณเองก่อนเผยแพร่แอป

ดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีการทำงานของโฆษณาทดสอบของ Mobile Ads SDK ได้ที่โฆษณาทดสอบ

การใช้งาน

ขั้นตอนหลักในการผสานรวมโฆษณาคั่นระหว่างหน้ามีดังนี้

  1. โหลดโฆษณา
  2. ลงทะเบียนรับการติดต่อกลับ
  3. แสดงโฆษณาและจัดการเหตุการณ์ในวงจรของโฆษณา

กำหนดค่า InterstitialAd

โฆษณาคั่นระหว่างหน้าจะแสดงในออบเจ็กต์ InterstitialAd ดังนั้นขั้นตอนแรกในการผสานรวมโฆษณาคั่นระหว่างหน้าเข้ากับแอปคือการสร้างและเริ่มต้นออบเจ็กต์ InterstitialAd

  1. เพิ่มส่วนหัวต่อไปนี้ลงในโค้ด C++ ของแอป

     #include "firebase/gma/interstial_ad.h"
    

  2. ประกาศและสร้างอินสแตนซ์ของออบเจ็กต์ InterstitialAd โดยทำดังนี้

     firebase::gma::InterstitialAd* interstitial_ad;
     interstitial_ad = new firebase::gma::InterstitialAd();
    

  3. เริ่มต้นอินสแตนซ์ InterstitialAd โดยใช้การแคสต์มุมมองหลักเป็นประเภท AdParent มุมมองหลักคือ JNI jobject ที่อ้างอิง Android Activity หรือพอยน์เตอร์ที่อ้างอิง iOS UIView

    // 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);
    
  4. คุณสามารถตรวจสอบสถานะการดำเนินการเริ่มต้นเป็นระยะๆ ได้โดยเรียกใช้ 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

บทแนะนําแบบวิดีโอของ Mobile Ads Garage

เรื่องราวความสำเร็จ

ขั้นตอนถัดไป