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

จัดทุกอย่างให้เป็นระเบียบอยู่เสมอด้วยคอลเล็กชัน บันทึกและจัดหมวดหมู่เนื้อหาตามค่ากำหนดของคุณ

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

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

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

ทดสอบโฆษณาทดสอบอยู่เสมอ

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

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

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

โหลดโฆษณา

การโหลดโฆษณาสําเร็จโดยใช้เมธอด 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

วิดีโอแนะนําการใช้โรงโฆษณาในอุปกรณ์เคลื่อนที่

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

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