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


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

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

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

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

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

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

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

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

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับวิธีการทำงานของโฆษณาทดสอบของ SDK โฆษณาบนอุปกรณ์เคลื่อนที่ โปรดดู Test Ads

การใช้งาน

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

  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() และจะได้รับ Callback เมื่อโฆษณานำเสนอสำเร็จหรือไม่สำเร็จ รวมถึงเมื่อ ปิดแล้ว

โค้ดต่อไปนี้แสดงวิธีขยายชั้นเรียนและกำหนดให้กับโฆษณา

  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();

แนวทางปฏิบัติแนะนำ

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

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

ตัวอย่างใน GitHub

  • ดูซอร์สโค้ดของตัวอย่างของเรา แอป Quickstart ใน GitHub

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

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

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