คู่มือนี้จะแสดงวิธีใช้ส่วนเสริมโฆษณาเนทีฟเพื่อติดตั้งใช้งานโฆษณาเนทีฟ AdMob ในแอป Unity รวมถึงสิ่งสำคัญบางอย่างที่ควรพิจารณาตลอดกระบวนการ
โฆษณาเนทีฟจะสอดคล้องกับทั้งรูปแบบและฟังก์ชันที่ผู้ใช้เห็นหรือใช้งานในที่ที่มีการวางโฆษณาเหล่านั้น และยังเข้ากับรูปลักษณ์ของแอปที่โฆษณาปรากฏด้วย รูปแบบโฆษณาเนทีฟของ AdMob ช่วยให้ผู้เผยแพร่โฆษณาแสดงโฆษณาที่สอดคล้องกับเนื้อหาได้ คุณสามารถใช้เทคโนโลยีนี้เพื่อใช้การแสดงผลที่กำหนดเองโดยละเอียด ที่ใช้ประโยชน์สูงสุดจากโค้ดแบบเนทีฟในแอป Unity
โฆษณาเนทีฟจะแสดงโดยใช้ GameObjects
ประเภทเดียวกับที่คุณใช้สร้างแอปอยู่แล้ว และสามารถจัดรูปแบบให้สอดคล้องกับการออกแบบภาพประสบการณ์ของผู้ใช้ที่แสดงโฆษณา เมื่อโฆษณาเนทีฟโหลดขึ้นมา
ได้รับออบเจ็กต์เนทีฟที่มีเนื้อหาและแอป Unity (ไม่ใช่
SDK) แสดงครีเอทีฟโฆษณาเหล่านั้น
ข้อกำหนดเบื้องต้น
- ปลั๊กอิน Unity ของ Google Mobile Ads เวอร์ชัน 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()
ชิ้นงานตัวเลือกโฆษณาอื่นๆ
คุณจำเป็นต้องแสดงชิ้นงานโฆษณาตัวเลือกโฆษณาอื่นๆ เป็นส่วนหนึ่งของโฆษณาเนทีฟ นอกจากนี้ ชิ้นงานโฆษณาของตัวเลือกโฆษณาอื่นๆ ต้องสังเกตเห็นได้ง่าย ดังนั้นให้เลือกสีและภาพพื้นหลังอย่างเหมาะสม
ลงทะเบียน GameObjects สำหรับชิ้นงานโฆษณา
คุณต้องลงทะเบียน 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;
}