โฆษณาคั่นระหว่างหน้า (เดิม)

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

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

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

ตัวอย่างผลิตภัณฑ์

  • ตัวอย่าง HelloWorld มีการติดตั้งใช้งานรูปแบบโฆษณาทั้งหมดน้อยที่สุด

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