คู่มือนี้แสดงวิธีใช้ส่วนเสริมโฆษณาเนทีฟเพื่อติดตั้งใช้งานโฆษณาเนทีฟของ AdMob ในแอป Unity รวมถึงสิ่งสำคัญบางอย่างที่ควรพิจารณาในระหว่างดำเนินการ
โฆษณาเนทีฟจะจับคู่ทั้งรูปแบบและการทำงานของประสบการณ์ของผู้ใช้ในตำแหน่งที่วางโฆษณา นอกจากนี้ยังมีลักษณะเข้ากับรูปลักษณ์ของแอปที่โฆษณาปรากฏด้วย รูปแบบโฆษณาเนทีฟของ AdMob ช่วยให้ผู้เผยแพร่โฆษณาแสดงโฆษณาที่สอดคล้องกับเนื้อหาได้ คุณสามารถใช้เทคโนโลยีนี้เพื่อใช้การแสดงผลที่กำหนดเองโดยละเอียด ซึ่งใช้ประโยชน์สูงสุดจากโค้ดแบบเนทีฟในแอป Unity
โฆษณาเนทีฟจะแสดงโดยใช้GameObjects
ประเภทเดียวกันกับที่คุณใช้สร้างแอปอยู่แล้ว
และสามารถจัดรูปแบบให้ตรงกับการออกแบบภาพของ
ประสบการณ์ของผู้ใช้ที่โฆษณาปรากฏ เมื่อโฆษณาเนทีฟโหลด แอปจะได้รับออบเจ็กต์เนทีฟที่มีชิ้นงานของโฆษณา และแอป Unity (ไม่ใช่ SDK) จะแสดงชิ้นงานเหล่านั้น
ข้อกำหนดเบื้องต้น
- ปลั๊กอิน Unity สำหรับโฆษณาในอุปกรณ์เคลื่อนที่ของ Google เวอร์ชัน 7.0.0 ขึ้นไป
- ทำตามคู่มือเริ่มต้นใช้งาน
- ดาวน์โหลด และติดตั้งส่วนเสริมโฆษณาเนทีฟ
โหลดรูปแบบโฆษณาเนทีฟ
ระบบจะโหลดโฆษณาเนทีฟผ่านคลาส AdLoader
ซึ่งมีคลาส AdLoader.Builder
ของตัวเองเพื่อปรับแต่งในระหว่างการสร้าง ForNativeAd()
เมธอดจะกำหนดค่า AdLoader ให้จัดการโฆษณาเนทีฟ
private void RequestNativeAd() {
AdLoader adLoader = new AdLoader.Builder(INSERT_AD_UNIT_HERE)
.ForNativeAd()
.Build();
}
ลงทะเบียนสำหรับเหตุการณ์โฆษณา AdLoader
หากต้องการรับการแจ้งเตือนเมื่อโฆษณาเนทีฟโหลดสําเร็จหรือไม่สําเร็จ ให้เพิ่ม
delegates ไปยังคลาส 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()
ชิ้นงาน AdChoices
คุณต้องแสดงชิ้นงานโฆษณาตัวเลือกโฆษณาอื่นๆ เป็นส่วนหนึ่งของโฆษณาเนทีฟ นอกจากนี้ สิ่งสำคัญคือชิ้นงานโฆษณาตัวเลือกโฆษณาอื่นๆ ต้องสังเกตเห็นได้ง่าย ดังนั้นให้เลือกสีและภาพพื้นหลังอย่างเหมาะสม
ลงทะเบียน 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;
}