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

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

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

วิดีโอแนะนําเกี่ยวกับวิดีโอ Garage Mobile

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

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