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