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

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

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

คู่มือนี้จะอธิบายวิธีผสานรวมโฆษณาคั่นระหว่างหน้าในแอป Unity

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

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

ขั้นตอนแรกของการแสดงโฆษณาคั่นระหว่างหน้าคือการสร้างออบเจ็กต์ InterstitialAd ในสคริปต์ที่แนบกับ GameObject

using GoogleMobileAds.Api;
...

private InterstitialAd interstitial;

private void RequestInterstitial()
{
    #if UNITY_ANDROID
        string adUnitId = "ca-app-pub-3940256099942544/1033173712";
    #elif UNITY_IPHONE
        string adUnitId = "ca-app-pub-3940256099942544/4411468910";
    #else
        string adUnitId = "unexpected_platform";
    #endif

    // Initialize an InterstitialAd.
    this.interstitial = new InterstitialAd(adUnitId);
}

เครื่องมือสร้างสําหรับ InterstitialAd มีพารามิเตอร์ต่อไปนี้

  • adUnitId - รหัสหน่วยโฆษณา AdMob ที่InterstitialAdควรโหลดโฆษณา

คุณควรทราบวิธีใช้หน่วยโฆษณาต่างๆ โดยขึ้นอยู่กับแพลตฟอร์ม คุณจะต้องใช้หน่วยโฆษณา iOS สําหรับคําขอโฆษณาใน iOS และหน่วยโฆษณา Android สําหรับคําขอใน Android

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

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

อย่างไรก็ตาม เมื่อคุณลงทะเบียนแอปใน UI ของ AdMob และสร้างรหัสหน่วยโฆษณาของคุณเองสําหรับใช้ในแอป คุณจะต้องกําหนดค่าอุปกรณ์เป็นอุปกรณ์ทดสอบอย่างชัดเจนเมื่อกําลังพัฒนา ข้อมูลนี้สําคัญมาก การทดสอบกับโฆษณาจริง (แม้ว่าคุณจะไม่เคยแตะโฆษณาก็ตาม) ถือเป็นการละเมิดนโยบายของ AdMob และอาจทําให้บัญชีถูกระงับ ดูทดสอบโฆษณาเพื่อดูข้อมูลเกี่ยวกับวิธีทําให้มั่นใจว่าคุณจะได้รับโฆษณาทดสอบเสมอเมื่อพัฒนา

โหลดโฆษณา

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

ตัวอย่างวิธีโหลดโฆษณามีดังนี้

using GoogleMobileAds.Api;
...
private InterstitialAd interstitial;

private void RequestInterstitial()
{
    #if UNITY_ANDROID
        string adUnitId = "ca-app-pub-3940256099942544/1033173712";
    #elif UNITY_IPHONE
        string adUnitId = "ca-app-pub-3940256099942544/4411468910";
    #else
        string adUnitId = "unexpected_platform";
    #endif

    // Initialize an InterstitialAd.
    this.interstitial = new InterstitialAd(adUnitId);
    // Create an empty ad request.
    AdRequest request = new AdRequest.Builder().Build();
    // Load the interstitial with the request.
    this.interstitial.LoadAd(request);
}

แสดงโฆษณา

โฆษณาคั่นระหว่างหน้าควรแสดงระหว่างการหยุดแสดงแอปตามปกติ การใช้ด่านต่างๆ ของเกมเป็นตัวอย่างที่ดีมากหรือหลังจากที่ผู้ใช้ทํางานเสร็จ หากต้องการแสดงโฆษณาคั่นระหว่างหน้า ให้ใช้เมธอด isLoaded() เพื่อยืนยันว่าโหลดเสร็จแล้ว จากนั้นเรียก show()

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

private void GameOver()
{
  if (this.interstitial.IsLoaded()) {
    this.interstitial.Show();
  }
}

เหตุการณ์โฆษณา

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

using GoogleMobileAds.Api;
...
private InterstitialAd interstitial;

private void RequestInterstitial()
{
    #if UNITY_ANDROID
        string adUnitId = "ca-app-pub-3940256099942544/1033173712";
    #elif UNITY_IPHONE
        string adUnitId = "ca-app-pub-3940256099942544/4411468910";
    #else
        string adUnitId = "unexpected_platform";
    #endif

     // Initialize an InterstitialAd.
    this.interstitial = new InterstitialAd(adUnitId);

    // Called when an ad request has successfully loaded.
    this.interstitial.OnAdLoaded += HandleOnAdLoaded;
    // Called when an ad request failed to load.
    this.interstitial.OnAdFailedToLoad += HandleOnAdFailedToLoad;
    // Called when an ad is shown.
    this.interstitial.OnAdOpening += HandleOnAdOpening;
    // Called when the ad is closed.
    this.interstitial.OnAdClosed += HandleOnAdClosed;

    // Create an empty ad request.
    AdRequest request = new AdRequest.Builder().Build();
    // Load the interstitial with the request.
    this.interstitial.LoadAd(request);
}

public void HandleOnAdLoaded(object sender, EventArgs args)
{
    MonoBehaviour.print("HandleAdLoaded event received");
}

public void HandleOnAdFailedToLoad(object sender, AdFailedToLoadEventArgs args)
{
    MonoBehaviour.print("HandleFailedToReceiveAd event received with message: "
                        + args.Message);
}

public void HandleOnAdOpening(object sender, EventArgs args)
{
    MonoBehaviour.print("HandleAdOpening event received");
}

public void HandleOnAdClosed(object sender, EventArgs args)
{
    MonoBehaviour.print("HandleAdClosed event received");
}

เหตุการณ์ OnAdFailedToLoad มีอาร์กิวเมนต์เหตุการณ์พิเศษ ระบบจะส่งอินสแตนซ์ของ HandleAdFailedToLoadEventArgs ที่มี Message เพื่ออธิบายข้อผิดพลาด ดังนี้

public void HandleOnAdFailedToLoad(object sender, AdFailedToLoadEventArgs args)
{
    print("Interstitial failed to load: " + args.Message);
    // Handle the ad failed to load event.
}
เหตุการณ์โฆษณาคำอธิบาย
OnAdLoaded ระบบจะเรียกเหตุการณ์ OnAdLoaded เมื่อโฆษณาโหลดเสร็จแล้ว
OnAdFailedToLoad ระบบจะเรียกใช้เหตุการณ์ OnAdFailedToLoad เมื่อโหลดโฆษณาไม่สําเร็จ พารามิเตอร์ Message จะอธิบายประเภทของความล้มเหลวที่เกิดขึ้น
OnAdOpening ระบบจะเรียกใช้วิธีการนี้เมื่อมีการแสดงโฆษณาโดยครอบคลุมหน้าจอของอุปกรณ์
OnAdClosed ระบบจะเรียกใช้วิธีการนี้เมื่อมีการปิดโฆษณาคั่นระหว่างหน้าเนื่องจากผู้ใช้แตะไอคอนปิดหรือใช้ปุ่มย้อนกลับ หากแอปหยุดเอาต์พุตเสียงหรือ Game Loop ไว้ชั่วคราว การดําเนินการนี้เหมาะที่จะกลับมาทํางานอีกครั้ง

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

เมื่อใช้ InterstitialAd เสร็จแล้ว อย่าลืมเรียกใช้เมธอด Destroy() ก่อนที่จะวางการอ้างอิงไปยังเมธอด

interstitial.Destroy();

การดําเนินการนี้จะแจ้งเตือนปลั๊กอินว่าไม่ได้ใช้งานออบเจ็กต์นี้แล้ว และจะเรียกคืนหน่วยความจําที่ออบเจ็กต์มีอยู่ได้ การไม่เรียกใช้เมธอดนี้จะทําให้หน่วยความจํารั่วไหล

แนวทางปฏิบัติแนะนําบางประการ

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

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

ตัวอย่าง

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