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

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

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

คู่มือนี้จะแสดงวิธีผสานรวมโฆษณาแบนเนอร์จาก AdMob เข้ากับแอป Unity

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

สร้างมุมมองแบนเนอร์

ขั้นตอนแรกของการแสดงแบนเนอร์คือการสร้างออบเจ็กต์ 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 - ตําแหน่งที่ควรวางโฆษณาแบนเนอร์ ค่า 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;

        // 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.LoadAdError.GetMessage());
    }

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

    public void HandleOnAdClosed(object sender, EventArgs args)
    {
        MonoBehaviour.print("HandleAdClosed 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 ระบบจะเรียกใช้วิธีการนี้เมื่อผู้ใช้แตะโฆษณา หากคุณใช้แพ็กเกจ Analytics เพื่อติดตามการคลิกผ่าน นี่คือพื้นที่ที่ดีในการบันทึก
OnAdClosed เมื่อผู้ใช้กลับมาที่แอปหลังจากดู URL ปลายทางของโฆษณา ระบบจะเรียกใช้วิธีการนี้ แอปสามารถใช้แอปนี้เพื่อกลับมาทํากิจกรรมที่ถูกระงับ หรือทํางานอื่นๆ ที่จําเป็นเพื่อให้พร้อมสําหรับการโต้ตอบ

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

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

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

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

bannerView.Destroy();

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

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

ตัวอย่าง

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