แบนเนอร์โฆษณา

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

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

สิ่งที่ต้องมีก่อน

ทําตามขั้นตอนเริ่มต้นใช้งานให้เสร็จสมบูรณ์ แอป Unity ควรนําเข้าปลั๊กอิน Unity สําหรับโฆษณาในอุปกรณ์เคลื่อนที่ของ Google อยู่แล้ว

สร้าง BannerView

ขั้นตอนแรกในการแสดงแบนเนอร์คือการสร้างออบเจ็กต์ BannerView ในสคริปต์ C# ที่แนบกับ GameObject

หากต้องการผสานรวมโฆษณาได้ง่ายขึ้นโดยใช้ Unity Editor ให้ลองใช้ตําแหน่งโฆษณารุ่นเบต้า

using System;
using UnityEngine;
using GoogleMobileAds.Api;
...
public class GoogleMobileAdsDemoScript : MonoBehaviour
{
    private BannerView bannerView;
    ...
    public void Start()
    {
        // Initialize the Google Mobile Ads SDK.
        MobileAds.Initialize(initStatus => { });

        this.RequestBanner();
    }

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

        // Create a 320x50 banner at the top of the screen.
        this.bannerView = new BannerView(adUnitId, AdSize.Banner, AdPosition.Top);
    }
}

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

  • adUnitId - รหัสหน่วยโฆษณา AdMob ที่BannerViewควรโหลดโฆษณา
  • AdSize - ขนาดโฆษณา AdMob ที่คุณต้องการใช้ (ดูรายละเอียดได้ที่ขนาดแบนเนอร์)
  • AdPosition - ตําแหน่งที่ควรวางโฆษณาแบนเนอร์ ค่า enum ของ AdPosition แสดงค่าของอันดับโฆษณาที่ถูกต้อง

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

(ไม่บังคับ) อันดับโฆษณาที่กําหนดเอง

สําหรับการควบคุมตําแหน่งที่วาง BannerView บนหน้าจอมากกว่าค่าที่ AdPosition เสนอ BannerView เครื่องมือสร้างที่มี x และพิกัด y เป็นพารามิเตอร์มีดังนี้

// Create a 320x50 banner ad at coordinate (0,50) on screen.
BannerView bannerView = new BannerView(adUnitId, AdSize.Banner, 0, 50);

ที่มุมซ้ายบนของ BannerView จะอยู่ในตําแหน่งที่ x และ y ที่ส่งไปยังตัวสร้าง โดยที่ต้นทางคือด้านซ้ายบนของหน้าจอ

(ไม่บังคับ) ขนาดโฆษณาที่กําหนดเอง

นอกจากการใช้ค่าคงที่ของ AdSize แล้ว คุณยังระบุขนาดที่กําหนดเองสําหรับโฆษณาได้ด้วย โดยทําดังนี้

AdSize adSize = new AdSize(250, 250);
BannerView bannerView = new BannerView(adUnitId, adSize, AdPosition.Bottom);

ทดสอบกับโฆษณาทดสอบเสมอ

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

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

โหลดโฆษณา

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

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

...
    private void RequestBanner()
    {
        #if UNITY_ANDROID
            string adUnitId = "ca-app-pub-3940256099942544/6300978111";
        #elif UNITY_IPHONE
            string adUnitId = "ca-app-pub-3940256099942544/2934735716";
        #else
            string adUnitId = "unexpected_platform";
        #endif

        // Create a 320x50 banner at the top of the screen.
        this.bannerView = new BannerView(adUnitId, AdSize.Banner, AdPosition.Top);

        // Create an empty ad request.
        AdRequest request = new AdRequest.Builder().Build();

        // Load the banner with the request.
        this.bannerView.LoadAd(request);
    }
...

เท่านี้ก็เรียบร้อย ตอนนี้แอปของคุณก็พร้อมที่จะแสดงโฆษณาแบนเนอร์จาก AdMob แล้ว

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

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

...
using System;
using UnityEngine;
using GoogleMobileAds.Api;
...
public class GoogleMobileAdsDemoScript : MonoBehaviour
{
    private BannerView bannerView;

    public void Start()
    {
        this.RequestBanner();
    }

    private void RequestBanner()
    {

        #if UNITY_ANDROID
            string adUnitId = "ca-app-pub-3940256099942544/6300978111";
        #elif UNITY_IPHONE
            string adUnitId = "ca-app-pub-3940256099942544/2934735716";
        #else
            string adUnitId = "unexpected_platform";
        #endif

        this.bannerView = new BannerView(adUnitId, AdSize.Banner, AdPosition.Top);

        // Called when an ad request has successfully loaded.
        this.bannerView.OnAdLoaded += this.HandleOnAdLoaded;
        // Called when an ad request failed to load.
        this.bannerView.OnAdFailedToLoad += this.HandleOnAdFailedToLoad;
        // Called when an ad is clicked.
        this.bannerView.OnAdOpening += this.HandleOnAdOpened;
        // Called when the user returned from the app after an ad click.
        this.bannerView.OnAdClosed += this.HandleOnAdClosed;
        // Called when the ad click caused the user to leave the application.
        this.bannerView.OnAdLeavingApplication += this.HandleOnAdLeavingApplication;

        // Create an empty ad request.
        AdRequest request = new AdRequest.Builder().Build();

        // Load the banner with the request.
        this.bannerView.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 HandleOnAdOpened(object sender, EventArgs args)
    {
        MonoBehaviour.print("HandleAdOpened event received");
    }

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

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

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

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

ตารางด้านล่างแสดงรายการขนาดแบนเนอร์มาตรฐาน

ขนาดในหน่วย dp (WxH) คำอธิบาย ความพร้อมใช้งาน ขนาดคงที่ของ AdSize
320x50 แบนเนอร์มาตรฐาน โทรศัพท์และแท็บเล็ต BANNER
320x100 แบนเนอร์ขนาดใหญ่ โทรศัพท์และแท็บเล็ต LARGE_BANNER
300 x 250 สี่เหลี่ยมผืนผ้ากลาง IAB โทรศัพท์และแท็บเล็ต MEDIUM_RECTANGLE
468x60 แบนเนอร์ขนาดเต็มของ IAB แท็บเล็ต FULL_BANNER
728x90 ลีดเดอร์บอร์ด IAB แท็บเล็ต LEADERBOARD
ความกว้างที่ระบุ x ความสูงที่ปรับได้ แบนเนอร์แบบปรับขนาดได้ โทรศัพท์และแท็บเล็ต ไม่มีข้อมูล
ความกว้างของหน้าจอ x 32|50|90 แบนเนอร์อัจฉริยะ โทรศัพท์และแท็บเล็ต SMART_BANNER
ดูข้อมูลเพิ่มเติมเกี่ยวกับแบนเนอร์แบบปรับขนาดได้ซึ่งสร้างขึ้นเพื่อแทนที่แบนเนอร์อัจฉริยะ

ล้างโฆษณาแบนเนอร์

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

bannerView.Destroy();

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

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

ตัวอย่าง

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