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

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

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

สิ่งที่ต้องดำเนินการก่อน

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

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

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

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

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

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับวิธีการทำงานของโฆษณาทดสอบของ 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 มุมมองระดับบนสุดเป็นการอ้างอิง jobject ของ JNI ไปยัง 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 ได้ที่ใช้สัญญาซื้อขายล่วงหน้าเพื่อตรวจสอบสถานะเสร็จสมบูรณ์ของการเรียกใช้เมธอด

โหลดโฆษณา

การโหลดโฆษณาจะใช้เมธอด 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 ที่ติดตั้งไว้ ซึ่งจะถูกเรียกเมื่อผู้ใช้โต้ตอบกับโฆษณาเสร็จแล้ว นอกจากนี้ ลองหยุดงานคำนวณที่หนักหน่วงไว้ชั่วคราว (เช่น Game Loop) ไว้ชั่วคราวขณะที่โฆษณากำลังแสดงอยู่ ซึ่งจะช่วยให้ผู้ใช้ไม่พบภาพกราฟิกที่ช้าหรือไม่ตอบสนอง หรือวิดีโอกระตุก
เผื่อเวลาโหลดให้เพียงพอ
การตรวจสอบว่าแสดงโฆษณาคั่นระหว่างหน้าในเวลาที่เหมาะสมแล้วก็เป็นสิ่งสำคัญเช่นกัน เพราะผู้ใช้ไม่ต้องรอโหลดโฆษณา การโหลดโฆษณาล่วงหน้าก่อนที่คุณจะตั้งใจจะแสดงจะช่วยรับประกันว่าแอปมีโฆษณาคั่นระหว่างหน้าที่โหลดอย่างสมบูรณ์พร้อมเมื่อถึงเวลาแสดงโฆษณา
อย่าแสดงโฆษณาต่อผู้ใช้จำนวนมาก
แม้ว่าการเพิ่มความถี่ของโฆษณาคั่นระหว่างหน้าในแอปอาจดูเป็นวิธีที่ยอดเยี่ยมในการเพิ่มรายได้ แต่ก็อาจทำให้ประสบการณ์ของผู้ใช้แย่ลงและอัตราการคลิกผ่านลดลงด้วย ตรวจสอบว่าผู้ใช้ไม่รู้สึกถูกขัดจังหวะบ่อยนักจนไม่สามารถใช้ประโยชน์จากแอปของคุณได้อีกต่อไป
อย่าใช้การโหลดที่เสร็จสมบูรณ์ในอนาคตเพื่อแสดงโฆษณาคั่นระหว่างหน้า
การดำเนินการนี้อาจทำให้ผู้ใช้ได้รับประสบการณ์การใช้งานที่ไม่ดี แต่ให้โหลดโฆษณาไว้ล่วงหน้า ก่อนที่จะต้องแสดง

แหล่งข้อมูลเพิ่มเติม

ตัวอย่างใน GitHub

วิดีโอแนะนำ Mobile Ads Garage

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

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