1. บทนำ
ในโค้ดแล็บนี้ คุณจะใช้โฆษณาเปิดแอป AdMob ในแอป Unity
สิ่งที่คุณจะสร้าง
โค้ดแล็บนี้จะแนะนําวิธีติดตั้งใช้งานโฆษณาเปิดแอป AdMob ในแอป Unity โดยใช้ปลั๊กอิน Unity สําหรับโฆษณาในอุปกรณ์เคลื่อนที่ของ Google

หากพบปัญหา (ข้อบกพร่องของโค้ด ข้อผิดพลาดทางไวยากรณ์ คำที่ไม่ชัดเจน และอื่นๆ) ขณะทำตาม Codelab นี้ ให้รายงานปัญหาโดยใช้ลิงก์รายงานข้อผิดพลาดที่มุมซ้ายล่างของ Codelab
สิ่งที่คุณจะได้เรียนรู้
- วิธีกำหนดค่าปลั๊กอิน Google Mobile Ads Unity
- วิธีติดตั้งใช้งานโฆษณาเปิดแอปในแอป Unity
สิ่งที่คุณต้องมี
- Unity 2018.4 ขึ้นไป
- Xcode 12 ขึ้นไปและ CocoaPods (เพื่อติดตั้งใช้งานใน iOS)
คุณจะให้คะแนนระดับประสบการณ์การใช้งาน AdMob เท่าใด
2. ตั้งค่าสภาพแวดล้อมในการพัฒนา
ดาวน์โหลดโค้ด
หลังจากดาวน์โหลดไฟล์ ZIP แล้ว ให้แตกเนื้อหาของไฟล์ คุณจะมีโฟลเดอร์ชื่อ admob-appopen-unity-main
หรือจะโคลนที่เก็บ GitHub จากบรรทัดคำสั่งก็ได้
$ git clone https://github.com/googlecodelabs/admob-appopen-unity
ที่เก็บจะมี 2 โฟลเดอร์ ได้แก่
เริ่มต้น: โค้ดเริ่มต้นที่คุณจะสร้างใน Codelab นี้
complete: โค้ดที่เสร็จสมบูรณ์สำหรับ Codelab นี้
3. ตั้งค่าแอปและหน่วยโฆษณา AdMob
เนื่องจาก Unity เป็น SDK แบบหลายแพลตฟอร์ม คุณจึงต้องเพิ่มแอปและหน่วยโฆษณาทั้งสำหรับ Android และ iOS ใน AdMob
ตั้งค่าสำหรับ Android
หากต้องการตั้งค่าสำหรับ Android คุณต้องเพิ่มแอป Android และสร้างหน่วยโฆษณา
เพิ่มแอป Android
- ในคอนโซล AdMob ให้คลิกเพิ่มแอปจากเมนูแอป
- เลือก Android เป็นแพลตฟอร์ม เมื่อระบบถามว่าแอปแสดงอยู่ใน App Store ที่รองรับหรือไม่ ให้คลิกไม่
- ป้อน
AdMob app open adในช่องชื่อแอป - คุณไม่จำเป็นต้องเปิดใช้เมตริกผู้ใช้เพื่อทำ Codelab นี้ให้เสร็จสมบูรณ์ อย่างไรก็ตาม เราขอแนะนำให้คุณทำเนื่องจากจะช่วยให้คุณเข้าใจพฤติกรรมของผู้ใช้ได้ละเอียดยิ่งขึ้น คลิกเพิ่มเพื่อทำกระบวนการให้เสร็จสมบูรณ์
สร้างหน่วยโฆษณา
- เลือกแอป AdMob app open ad (Android) จากเมนูแอปในคอนโซล AdMob
- คลิกเมนูหน่วยโฆษณา
|
|
โดยปกติแล้ว หน่วยโฆษณาใหม่จะใช้เวลา 2-3 ชั่วโมงจึงจะแสดงโฆษณาได้
หากต้องการทดสอบลักษณะการทํางานของโฆษณาทันที ให้ใช้รหัสแอปทดสอบและรหัสหน่วยโฆษณาทดสอบที่ระบุไว้ในตารางรหัสแอป/รหัสหน่วยโฆษณา Android และรหัสแอป/รหัสหน่วยโฆษณา iOS
ตั้งค่าสำหรับ iOS
หากต้องการตั้งค่าสำหรับ iOS คุณต้องเพิ่มแอป iOS และสร้างหน่วยโฆษณา
เพิ่มแอป iOS
- ในคอนโซล AdMob ให้คลิกเพิ่มแอปจากเมนูแอป
- เลือก iOS เป็นแพลตฟอร์ม เมื่อระบบถามว่าแอปแสดงอยู่ใน App Store ที่รองรับหรือไม่ ให้คลิกไม่
- ป้อน
AdMob app open adในช่องชื่อแอป - คุณไม่จำเป็นต้องเปิดใช้เมตริกผู้ใช้เพื่อทำ Codelab นี้ให้เสร็จสมบูรณ์ อย่างไรก็ตาม เราขอแนะนำให้คุณทำเนื่องจากจะช่วยให้คุณเข้าใจพฤติกรรมของผู้ใช้ได้ละเอียดยิ่งขึ้น คลิกเพิ่มเพื่อทำกระบวนการให้เสร็จสมบูรณ์
สร้างหน่วยโฆษณา
- เลือกแอปโฆษณาในบรรทัดของ AdMob (iOS) จากเมนูแอปในคอนโซล AdMob
- คลิกเมนูหน่วยโฆษณา
|
|
โดยปกติแล้ว หน่วยโฆษณาใหม่จะใช้เวลา 2-3 ชั่วโมงจึงจะแสดงโฆษณาได้
หากต้องการทดสอบลักษณะการทํางานของโฆษณาทันที ให้ใช้รหัสแอปทดสอบและรหัสหน่วยโฆษณาทดสอบที่แสดงในตารางต่อไปนี้
ไม่บังคับ: ใช้แอปและหน่วยโฆษณา AdMob สำหรับทดสอบ
หากต้องการทำตาม Codelab แทนการสร้างแอปพลิเคชันและหน่วยโฆษณาใหม่ด้วยตนเอง คุณสามารถใช้รหัสแอป AdMob สำหรับทดสอบและรหัสหน่วยโฆษณาที่ระบุไว้ในตารางต่อไปนี้
รหัสแอป/รหัสหน่วยโฆษณา Android
รายการ | รหัสแอป/รหัสหน่วยโฆษณา |
รหัสแอป AdMob |
|
รหัสหน่วยโฆษณา |
|
รหัสแอป/รหัสหน่วยโฆษณา iOS
รายการ | รหัสแอป/รหัสหน่วยโฆษณา |
รหัสแอป AdMob |
|
รหัสหน่วยโฆษณา |
|
ดูข้อมูลเพิ่มเติมเกี่ยวกับโฆษณาทดสอบได้ที่เอกสารประกอบสำหรับนักพัฒนาซอฟต์แวร์โฆษณาทดสอบ Android และโฆษณาทดสอบ iOS
4. เพิ่มปลั๊กอิน Google Mobile Ads Unity
การผสานรวมปลั๊กอิน Unity สำหรับโฆษณาในอุปกรณ์เคลื่อนที่ของ Google เป็นขั้นตอนแรกในการแสดงโฆษณา AdMob และรับรายได้
ดาวน์โหลดปลั๊กอิน Unity สำหรับโฆษณาในอุปกรณ์เคลื่อนที่
ปลั๊กอิน Unity สำหรับโฆษณาในอุปกรณ์เคลื่อนที่ของ Google ช่วยให้นักพัฒนาซอฟต์แวร์ Unity แสดงโฆษณาในอุปกรณ์เคลื่อนที่ของ Google ในแอป Android และ iOS ได้อย่างง่ายดาย ปลั๊กอินมีอินเทอร์เฟซ C# สำหรับขอโฆษณาซึ่งสคริปต์ C# ในโปรเจ็กต์ Unity ของคุณใช้
ใช้ลิงก์ด้านล่างเพื่อดาวน์โหลดแพ็กเกจ Unity สำหรับปลั๊กอิน
เปิดโปรเจ็กต์เริ่มต้น
- เปิด Unity Hub
- ในแท็บโปรเจ็กต์ ให้คลิกปุ่มเพิ่ม
- ไปที่โฟลเดอร์ที่คุณแตกไฟล์โค้ดที่ดาวน์โหลดในขั้นตอนการตั้งค่าสภาพแวดล้อมในการพัฒนา
- เปิดโฟลเดอร์ starter
- คุณจะเห็นโปรเจ็กต์เริ่มต้นในรายการโปรเจ็กต์ คลิกโปรเจ็กต์เพื่อเปิดใน Unity Editor
นำเข้าปลั๊กอิน Unity สำหรับโฆษณาในอุปกรณ์เคลื่อนที่
- ในโปรแกรมแก้ไข Unity ให้เลือกชิ้นงาน > นำเข้าแพ็กเกจ > แพ็กเกจที่กำหนดเองจากเมนู
- เลือก
GoogleMobileAds-{VERSION}.unitypackageที่คุณดาวน์โหลดในขั้นตอนก่อนหน้า - ตรวจสอบว่าได้เลือกไฟล์ทั้งหมดแล้ว แล้วคลิกนำเข้า
ตั้งรหัสแอป AdMob
- ใน Unity Editor ให้เลือกชิ้นงาน > โฆษณา Google ในอุปกรณ์เคลื่อนที่ > การตั้งค่าจากเมนู
- ป้อนรหัสแอป AdMob ของ Android และ iOS ในแต่ละช่อง หากต้องการทำตาม Codelab แทนการสร้างแอปพลิเคชันและหน่วยโฆษณาใหม่ด้วยตนเอง ให้ป้อนรหัสแอป AdMob สำหรับทดสอบดังนี้

5. สร้างคลาสยูทิลิตี
สร้างคลาสใหม่ชื่อ AppOpenAdManager ในโฟลเดอร์ Scripts คลาสนี้จัดการตัวแปรอินสแตนซ์เพื่อติดตามโฆษณาที่โหลดแล้วและรหัสหน่วยโฆษณาสำหรับแต่ละแพลตฟอร์ม
AppOpenAdManager.cs
using System;
using GoogleMobileAds.Api;
using UnityEngine;
public class AppOpenAdManager
{
#if UNITY_ANDROID
// Test ad unit ID: ca-app-pub-3940256099942544/3419835294
private const string AD_UNIT_ID = "<YOUR_ANDROID_APPOPEN_AD_UNIT_ID>";
#elif UNITY_IOS
// Test ad unit ID: ca-app-pub-3940256099942544/5662855259
private const string AD_UNIT_ID = "<YOUR_IOS_APPOPEN_AD_UNIT_ID>";
#else
private const string AD_UNIT_ID = "unexpected_platform";
#endif
private static AppOpenAdManager instance;
private AppOpenAd ad;
private bool isShowingAd = false;
public static AppOpenAdManager Instance
{
get
{
if (instance == null)
{
instance = new AppOpenAdManager();
}
return instance;
}
}
private bool IsAdAvailable
{
get
{
return ad != null;
}
}
public void LoadAd()
{
// TODO: Load an app open ad.
}
}
โหลดโฆษณา
การโหลดโฆษณาทำได้โดยใช้เมธอด AppOpenAd.LoadAd() แบบคงที่ เมธอดโหลดต้องใช้รหัสหน่วยโฆษณา โหมด ScreenOrientation ออบเจ็กต์ AdRequest และตัวแฮนเดิลการเสร็จสมบูรณ์ซึ่งจะเรียกใช้เมื่อโหลดโฆษณาสำเร็จหรือไม่สำเร็จ
ระบบจะระบุออบเจ็กต์ AppOpenAd ที่โหลดแล้วเป็นพารามิเตอร์ในตัวแฮนเดิลการเสร็จสมบูรณ์ ติดตั้งใช้งานวิธี LoadAd() ดังนี้
AppOpenAdManager.cs
public class AppOpenAdManager
{
...
public void LoadAd()
{
AdRequest request = new AdRequest.Builder().Build();
// Load an app open ad for portrait orientation
AppOpenAd.LoadAd(AD_UNIT_ID, ScreenOrientation.Portrait, request, ((appOpenAd, error) =>
{
if (error != null)
{
// Handle the error.
Debug.LogFormat("Failed to load the ad. (reason: {0})", error.LoadAdError.GetMessage());
return;
}
// App open ad is loaded.
ad = appOpenAd;
}));
}
}
แสดงโฆษณา
ก่อนแสดงโฆษณา ให้ลงทะเบียนตัวแฮนเดิลเหตุการณ์แต่ละรายการเพื่อรอเหตุการณ์โฆษณาแต่ละรายการ
AppOpenAdManager.cs
public class AppOpenAdManager
{
...
public void ShowAdIfAvailable()
{
if (!IsAdAvailable || isShowingAd)
{
return;
}
ad.OnAdDidDismissFullScreenContent += HandleAdDidDismissFullScreenContent;
ad.OnAdFailedToPresentFullScreenContent += HandleAdFailedToPresentFullScreenContent;
ad.OnAdDidPresentFullScreenContent += HandleAdDidPresentFullScreenContent;
ad.OnAdDidRecordImpression += HandleAdDidRecordImpression;
ad.OnPaidEvent += HandlePaidEvent;
ad.Show();
}
private void HandleAdDidDismissFullScreenContent(object sender, EventArgs args)
{
Debug.Log("Closed app open ad");
// Set the ad to null to indicate that AppOpenAdManager no longer has another ad to show.
ad = null;
isShowingAd = false;
LoadAd();
}
private void HandleAdFailedToPresentFullScreenContent(object sender, AdErrorEventArgs args)
{
Debug.LogFormat("Failed to present the ad (reason: {0})", args.AdError.GetMessage());
// Set the ad to null to indicate that AppOpenAdManager no longer has another ad to show.
ad = null;
LoadAd();
}
private void HandleAdDidPresentFullScreenContent(object sender, EventArgs args)
{
Debug.Log("Displayed app open ad");
isShowingAd = true;
}
private void HandleAdDidRecordImpression(object sender, EventArgs args)
{
Debug.Log("Recorded ad impression");
}
private void HandlePaidEvent(object sender, AdValueEventArgs args)
{
Debug.LogFormat("Received paid event. (currency: {0}, value: {1}",
args.AdValue.CurrencyCode, args.AdValue.Value);
}
}
พิจารณาการหมดอายุของโฆษณา
การอ้างอิงโฆษณาในโฆษณาเปิดแอปจะหมดเวลาหลังจากผ่านไป 4 ชั่วโมง โฆษณาที่แสดงนานกว่า 4 ชั่วโมงหลังจากเวลาที่ส่งคำขอจะใช้ไม่ได้อีกต่อไปและอาจไม่สร้างรายได้
หากต้องการไม่ให้แสดงโฆษณาที่หมดอายุแล้ว ให้แก้ไขพร็อพเพอร์ตี้ IsAdAvailable เป็น AppOpenAdManager ที่ตรวจสอบระยะเวลาตั้งแต่โฆษณาโหลด จากนั้นใช้วิธีดังกล่าวเพื่อตรวจสอบว่าโฆษณายังคงใช้ได้หรือไม่
AppOpenAdManager.cs
public class AppOpenAdManager
{
...
// TODO: Add loadTime field
private DateTime loadTime;
private bool IsAdAvailable
{
get
{
// TODO: Consider ad expiration
return ad != null && (System.DateTime.UtcNow - loadTime).TotalHours < 4;
}
}
public void LoadAd()
{
if (IsAdAvailable)
{
return;
}
AdRequest request = new AdRequest.Builder().Build();
AppOpenAd.LoadAd(AD_UNIT_ID, ScreenOrientation.Portrait, request, ((appOpenAd, error) =>
{
if (error != null)
{
Debug.LogFormat("Failed to load the ad. (reason: {0})", error.LoadAdError.GetMessage());
return;
}
ad = appOpenAd;
Debug.Log("App open ad loaded");
// TODO: Keep track of time when the ad is loaded.
loadTime = DateTime.UtcNow;
}));
}
}
6. อัปเดตฉากเพื่อโหลด/แสดงโฆษณา
อัปเดตเมธอด Start() ในคลาส MainScene เพื่อโหลดโฆษณาที่เปิดแอปเมื่อฉากเริ่มต้น
หากต้องการรับการแจ้งเตือนเกี่ยวกับเหตุการณ์ที่แอปทำงานอยู่เบื้องหน้า เราขอแนะนำให้คุณฟัง AppStateEventNotifier Singleton การใช้AppStateEventNotifier.AppStateChangedผู้มอบสิทธิ์จะช่วยให้แอปได้รับการแจ้งเตือนเกี่ยวกับเหตุการณ์การเปิดแอปและการนำแอปไปไว้เบื้องหน้า และจะแสดงโฆษณาได้
MainScene.cs
using GoogleMobileAds.Api;
using GoogleMobileAds.Common;
using UnityEngine;
public class MainScene : MonoBehaviour
{
public void Start()
{
// TODO: Request an app open ad.
MobileAds.Initialize((initStatus) =>
{
AppOpenAdManager.Instance.LoadAd();
AppStateEventNotifier.AppStateChanged += OnAppStateChanged;
});
}
public void OnAppStateChanged(AppState state)
{
if (state == AppState.Foreground)
{
// TODO: Show an app open ad if available.
AppOpenAdManager.Instance.ShowAdIfAvailable();
}
}
}
เท่านี้ก็เรียบร้อย สร้างและเรียกใช้โปรเจ็กต์ในอุปกรณ์หรือโปรแกรมจำลอง เมื่อเปิดแอปแล้ว ให้รอสักครู่เพื่อให้โฆษณาโหลดเสร็จสมบูรณ์
หลังจากนั้น เมื่อคุณเปลี่ยนกลับไปที่แอปจากแอปอื่นๆ/หน้าจอหลัก โฆษณาการเปิดแอปจะแสดงดังที่ด้านล่าง

7. เสร็จเรียบร้อย
คุณทำ Codelab เสร็จแล้ว คุณดูโค้ดที่เสร็จสมบูรณ์สำหรับโค้ดแล็บนี้ได้ในโฟลเดอร์
complete
