คู่มือนี้จะแสดงวิธีใช้ส่วนเสริมโฆษณาเนทีฟเพื่อติดตั้งใช้งานโฆษณาเนทีฟของ AdMob ในแอป Unity รวมถึงสิ่งที่ควรพิจารณาในระหว่างดำเนินการ
โฆษณาเนทีฟจะจับคู่ทั้งรูปแบบและการทำงานของประสบการณ์ของผู้ใช้ในตำแหน่งที่วางโฆษณา นอกจากนี้ยังมีลักษณะเข้ากับรูปลักษณ์ของแอปที่โฆษณาปรากฏด้วย รูปแบบโฆษณาเนทีฟของ AdMob ช่วยให้ผู้เผยแพร่โฆษณาแสดงโฆษณาที่สอดคล้องกับเนื้อหาได้ คุณสามารถใช้เทคโนโลยีนี้เพื่อใช้การแสดงผลที่กำหนดเองโดยละเอียดซึ่งใช้ประโยชน์สูงสุดจากโค้ดแบบเนทีฟในแอป Unity
โฆษณาเนทีฟจะแสดงโดยใช้ GameObjects ประเภทเดียวกับที่คุณใช้สร้างแอปอยู่แล้ว และสามารถจัดรูปแบบให้เข้ากับรูปลักษณ์ของประสบการณ์ของผู้ใช้ในตำแหน่งที่โฆษณาปรากฏ เมื่อโฆษณาเนทีฟโหลด แอปจะได้รับออบเจ็กต์เนทีฟที่มีชิ้นงานและแอป Unity (ไม่ใช่ SDK) จะแสดงชิ้นงานเหล่านั้น
ข้อกำหนดเบื้องต้น
- ปลั๊กอิน Google Mobile Ads สำหรับ Unity เวอร์ชัน 7.0.0 ขึ้นไป
- ทำตามคู่มือเริ่มต้นใช้งานให้เสร็จสมบูรณ์
- ดาวน์โหลด และติดตั้งส่วนเสริมโฆษณาเนทีฟ
โหลดรูปแบบโฆษณาเนทีฟ
โฆษณาเนทีฟจะโหลดผ่านคลาส AdLoader ซึ่งมีคลาส
AdLoader.Builder ของตัวเองเพื่อปรับแต่งระหว่างการสร้าง เมธอด ForNativeAd() จะกำหนดค่า AdLoader ให้จัดการโฆษณาเนทีฟ
private void RequestNativeAd() {
AdLoader adLoader = new AdLoader.Builder(INSERT_AD_UNIT_HERE)
.ForNativeAd()
.Build();
}
ลงทะเบียนเพื่อรับเหตุการณ์โฆษณาของ AdLoader
หากต้องการรับการแจ้งเตือนเมื่อโฆษณาเนทีฟโหลดสำเร็จหรือโหลดไม่สำเร็จ ให้เพิ่มผู้รับมอบสิทธิ์ลงในคลาส AdLoader สำหรับเหตุการณ์ที่ระบุไว้ด้านล่าง
OnNativeAdLoaded
เรียกใช้เมื่อโฆษณาเนทีฟโหลดสำเร็จ คุณต้องมีผู้รับมอบสิทธิ์สำหรับเหตุการณ์นี้จึงจะเข้าถึงโฆษณาที่โหลดได้
OnAdFailedToLoad
เรียกใช้เมื่อโฆษณาเนทีฟโหลดไม่สำเร็จ
โหลดโฆษณา
เมื่อสร้าง AdLoader เสร็จแล้ว ให้เรียกใช้เมธอด LoadAd() เพื่อขอโฆษณา
adLoader.LoadAd(new AdRequest.Builder().Build());
สร้างคำขอโฆษณา
ข้อมูลโค้ดด้านล่างแสดงวิธีสร้าง AdLoader ที่กำหนดค่าให้ขอโฆษณาเนทีฟ ตั้งค่าผู้รับมอบสิทธิ์สำหรับการโหลดโฆษณาที่สำเร็จและไม่สำเร็จ รวมถึงส่งคำขอโฆษณา
private void RequestNativeAd() {
AdLoader adLoader = new AdLoader.Builder(INSERT_AD_UNIT_HERE)
.ForNativeAd()
.Build();
adLoader.OnNativeAdLoaded += this.HandleNativeAdLoaded;
adLoader.OnAdFailedToLoad += this.HandleAdFailedToLoad;
adLoader.LoadAd(new AdRequest.Builder().Build());
}
จัดการการโหลดโฆษณาที่ไม่สำเร็จ
เหตุการณ์ OnAdFailedToLoad มีประเภทเป็น EventHandle<AdFailedToLoadEventArgs>
การแยกวิเคราะห์เหตุผลที่โฆษณาโหลดไม่สำเร็จจากเหตุการณ์นี้แสดงไว้ด้านล่าง
private void RequestNativeAd() {
...
adLoader.OnAdFailedToLoad += this.HandleNativeAdFailedToLoad;
}
private void HandleNativeAdFailedToLoad(object sender, AdFailedToLoadEventArgs args) {
Debug.Log("Native ad failed to load: " + args.Message);
}
แสดงโฆษณาเนทีฟ
เมื่อโฆษณาเนทีฟโหลด ระบบจะเรียกใช้เหตุการณ์โฆษณาสำหรับรูปแบบโฆษณาที่เกี่ยวข้อง จากนั้นแอปของคุณจะมีหน้าที่แสดงโฆษณา แม้ว่าจะไม่จำเป็นต้องแสดงทันทีก็ตาม
จัดการจำนวนโฆษณา
เหตุการณ์ OnNativeAdLoaded มีประเภทเป็น EventHandler<NativeAdEventArgs> คุณสามารถดึงโฆษณาที่ห่อหุ้มไว้ในออบเจ็กต์ NativeAd จาก
NativeAdEventArgs ได้ดังที่แสดงด้านล่าง
private NativeAd nativeAd;
...
private void HandleNativeAdLoaded(object sender, NativeAdEventArgs args) {
Debug.Log("Native ad loaded.");
this.nativeAd = args.nativeAd;
}
ดึงชิ้นงานโฆษณาเนทีฟ
เมื่อโฆษณาโหลดแล้ว คุณจะเข้าถึงชิ้นงานของโฆษณาได้ดังที่แสดงด้านล่าง ระบบจะแสดงผลชิ้นงานกราฟิกเป็นออบเจ็กต์ Texture2D และชิ้นงานข้อความเป็นออบเจ็กต์ string
private bool nativeAdLoaded;
private NativeAd nativeAd;
void Update() {
...
if (this.nativeAdLoaded) {
this.nativeAdLoaded = false;
// Get Texture2D for the icon asset of native ad.
Texture2D iconTexture = this.nativeAd.GetIconTexture();
// Get string for headline asset of native ad.
string headline = this.nativeAd.GetHeadlineText();
}
}
private void HandleNativeAdLoaded(object sender, NativeAdEventArgs args) {
Debug.Log("Native ad loaded.");
this.nativeAd = args.nativeAd;
this.nativeAdLoaded = true;
}
โปรดทราบว่าควรเข้าถึงชิ้นงานโฆษณาในเธรดหลักเท่านั้น เช่น จากเมธอด Update() ของสคริปต์ Unity นอกจากนี้ โปรดทราบว่าชิ้นงานต่อไปนี้ไม่รับประกันว่าจะพร้อมใช้งานเสมอไป และควรตรวจสอบก่อนแสดง
GetStarRating()GetStore()GetPrice()GetAdvertiser()GetIconTexture()
ชิ้นงานตัวเลือกโฆษณาอื่นๆ
คุณต้องแสดงชิ้นงานโฆษณาตัวเลือกโฆษณาอื่นๆ เป็นส่วนหนึ่งของโฆษณาเนทีฟ นอกจากนี้ สิ่งสำคัญคือชิ้นงานโฆษณาตัวเลือกโฆษณาอื่นๆ ต้องสังเกตเห็นได้ง่าย ดังนั้นให้เลือกสีและภาพพื้นหลังอย่างเหมาะสม
ลงทะเบียน GameObject สำหรับชิ้นงานโฆษณา
คุณต้องลงทะเบียน GameObject เพื่อให้ชิ้นงานโฆษณาแสดงในแอป Unity หากลงทะเบียนสำเร็จ เมธอดที่ใช้ลงทะเบียน GameObject จะแสดงผลเป็น bool สำหรับ List<GameObject> เมธอดจะแสดงผลเป็น
int ซึ่งระบุจำนวน GameObject ที่ลงทะเบียนสำเร็จ
หากลงทะเบียนชิ้นงานโฆษณาไม่สำเร็จ ระบบจะไม่จดจำการแสดงผลและการคลิกโฆษณาเนทีฟที่เกี่ยวข้อง
if (!this.nativeAd.RegisterIconImageGameObject(icon))
{
// Handle failure to register the icon ad asset.
}
GameObject ที่ลงทะเบียนสำหรับชิ้นงานโฆษณาต้องมีคอมโพเนนต์ Collider แบบนูนซึ่งแสดงถึงขนาดและรูปร่างของ GameObject หากออบเจ็กต์ GameObject ที่ลงทะเบียนกับชิ้นงานโฆษณาไม่มีคอมโพเนนต์ Collider หรือมีคอมโพเนนต์ที่กำหนดค่าไม่ถูกต้อง โฆษณาเนทีฟจะทำงานไม่ถูกต้อง
ในข้อมูลโค้ดด้านล่าง ระบบจะเพิ่ม BoxCollider ลงใน GameObject ที่ใช้ TextMesh เพื่อแสดงชิ้นงานโฆษณาบรรทัดแรกของโฆษณาเนทีฟ เมื่อแนบ BoxCollider กับ GameObject แล้ว ระบบจะปรับขนาดโดยอัตโนมัติให้พอดีกับข้อความของคอมโพเนนต์ TextMesh
// Create GameObject that will display the headline ad asset.
GameObject headline = new GameObject();
headline.AddComponent<TextMesh>();
headline.GetComponent<TextMesh>().characterSize = 0.5 f;
headline.GetComponent<TextMesh>().anchor = TextAnchor.MiddleCenter;
headline.GetComponent<TextMesh>().color = Color.black;
// Get string of the headline asset.
string headlineText = this.nativeAd.GetHeadlineText();
headline.GetComponent<TextMesh>().text = headlineText;
// Add box collider to the GameObject which will automatically scale.
headline.AddComponent<BoxCollider>();
สาธิต
โค้ดต่อไปนี้แสดงวิธีดึงชิ้นงานไอคอนของโฆษณาเนทีฟที่โหลดสำเร็จ แสดงชิ้นงานโฆษณาไอคอนโดยตั้งค่าพื้นผิวของ Quad และลงทะเบียน GameObject ที่จะใช้แสดงชิ้นงาน คุณควรทำซ้ำกระบวนการดึงชิ้นงานโฆษณาและลงทะเบียนกับคลาสโฆษณาเนทีฟนี้สำหรับชิ้นงานแต่ละรายการที่แอปแสดง
private GameObject icon;
private bool nativeAdLoaded;
private NativeAd nativeAd;
...
void Update() {
...
if (this.nativeAdLoaded) {
this.nativeAdLoaded = false;
// Get Texture2D for icon asset of native ad.
Texture2D iconTexture = this.nativeAd.GetIconTexture();
icon = GameObject.CreatePrimitive(PrimitiveType.Quad);
icon.transform.position = new Vector3(1, 1, 1);
icon.transform.localScale = new Vector3(1, 1, 1);
icon.GetComponent<Renderer>().material.mainTexture = iconTexture;
// Register GameObject that will display icon asset of native ad.
if (!this.nativeAd.RegisterIconImageGameObject(icon))
{
// Handle failure to register ad asset.
}
}
}
...
private void HandleNativeAdLoaded(object sender, NativeAdEventArgs args) {
Debug.Log("Native ad loaded.");
this.nativeAd = args.nativeAd;
this.nativeAdLoaded = true;
}