โฆษณาแบนเนอร์คือโฆษณาแบบรูปภาพสี่เหลี่ยมผืนผ้าหรือสี่เหลี่ยมผืนผ้าที่ใช้พื้นที่บนหน้าจอ แอปจะยังคงอยู่ในหน้าจอขณะที่ผู้ใช้โต้ตอบกับแอป และจะรีเฟรชโดยอัตโนมัติหลังจากเวลาผ่านไประยะหนึ่ง หากคุณเพิ่งเริ่มใช้การโฆษณาบนอุปกรณ์เคลื่อนที่ ก็เป็นวิธีที่ยอดเยี่ยมในการเริ่มต้นใช้งาน กรณีศึกษา
คู่มือนี้จะแสดงวิธีผสานรวมโฆษณาแบนเนอร์จาก AdMob เข้ากับแอป Unity
สิ่งที่ต้องดำเนินการก่อน
- ทําตามคู่มือเริ่มต้นใช้งานให้เสร็จสมบูรณ์
สร้างมุมมองแบนเนอร์
ขั้นตอนแรกของการแสดงแบนเนอร์คือการสร้างออบเจ็กต์ BannerView
ในสคริปต์ C# ที่แนบกับ GameObject
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();
การดําเนินการนี้จะแจ้งเตือนปลั๊กอินว่าไม่มีการใช้ออบเจ็กต์นั้นแล้ว และจะเรียกคืนหน่วยความจําที่มีการรวบรวมได้ การไม่เรียกใช้เมธอดนี้จะทําให้หน่วยความจํารั่วไหล