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


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

คู่มือนี้แสดงวิธีผสานรวมโฆษณาคั่นระหว่างหน้าในแอป 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 หรือตัวชี้ไปยัง 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);
    
  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 ได้ที่ ใช้ 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

วิดีโอสอนการใช้งาน Mobile Ads Garage

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

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