คุณสามารถใช้ Firebase Remote Config เพื่อกำหนดพารามิเตอร์ในแอปและ อัปเดตค่าในระบบคลาวด์ ซึ่งทำให้คุณสามารถแก้ไขลักษณะที่ปรากฏ พฤติกรรมของแอปโดยไม่เผยแพร่การอัปเดตแอป
ไลบรารี Remote Config ใช้เพื่อจัดเก็บค่าพารามิเตอร์เริ่มต้นในแอป ดึงข้อมูลค่าพารามิเตอร์ที่อัปเดตจากแบ็กเอนด์ Remote Config และการควบคุม เมื่อค่าที่ดึงมาพร้อมใช้งานสำหรับแอป หากต้องการทราบข้อมูลเพิ่มเติม ดูกลยุทธ์การโหลดการกำหนดค่าระยะไกล
คู่มือนี้จะอธิบายถึง ผ่านขั้นตอนต่างๆ เพื่อเริ่มต้นใช้งาน และแสดงโค้ดตัวอย่าง ซึ่งทั้งหมดนี้คือ สามารถโคลนหรือดาวน์โหลดจาก firebase/quickstart-unity ที่เก็บ GitHub
ขั้นตอนที่ 1: เพิ่ม Remote Config ลงในแอป
ก่อนที่จะใช้งานได้ Remote Config คุณต้องทำดังนี้
ลงทะเบียนโปรเจ็กต์ Unity และกำหนดค่าให้ใช้ Firebase
หากโปรเจ็กต์ Unity ของคุณใช้ Firebase อยู่แล้ว ก็หมายความว่า ลงทะเบียนและกำหนดค่าสำหรับ Firebase แล้ว
หากไม่มีโปรเจ็กต์ Unity คุณสามารถดาวน์โหลด ตัวอย่างแอป
เพิ่ม Firebase Unity SDK (โดยเฉพาะ
FirebaseRemoteConfig.unitypackage
) ไปยัง โปรเจ็กต์ Unity
โปรดทราบว่าการเพิ่ม Firebase ลงในโปรเจ็กต์ Unity จะเกี่ยวข้องกับงานทั้งใน คอนโซล Firebase และในโปรเจ็กต์ Unity ที่เปิดอยู่ (เช่น คุณดาวน์โหลดไฟล์การกำหนดค่า Firebase จากคอนโซล แล้วย้าย ลงในโปรเจ็กต์ Unity)
ขั้นตอนที่ 2: ตั้งค่าพารามิเตอร์เริ่มต้นในแอป
คุณตั้งค่าพารามิเตอร์เริ่มต้นในแอปได้ใน Remote Config เพื่อให้แอปทำงานตามที่ตั้งใจไว้ก่อนที่จะเชื่อมต่อกับ แบ็กเอนด์ Remote Config เพื่อให้ใช้ค่าเริ่มต้นได้หากไม่มี ที่ตั้งไว้ในแบ็กเอนด์
ในการดำเนินการนี้ ให้สร้างพจนานุกรมสตริงและป้อนข้อมูลด้วยคู่คีย์/ค่า ซึ่งแสดงค่าเริ่มต้นที่คุณต้องการเพิ่ม หากคุณกำหนดค่าแล้ว Remote Config ค่าพารามิเตอร์แบ็กเอนด์ คุณจะดาวน์โหลดไฟล์ที่ มีคู่คีย์/ค่าเหล่านี้และใช้เพื่อสร้างพจนานุกรมสตริง สำหรับข้อมูลเพิ่มเติม โปรดดู ดาวน์โหลด Remote Config ค่าเริ่มต้นของเทมเพลต
(พร็อพเพอร์ตี้ที่ไม่ใช่สตริงจะเป็น
แปลงเป็นประเภทของพร็อพเพอร์ตี้เมื่อมีการเรียกใช้ SetDefaultsAsync()
)
System.Collections.Generic.Dictionary<string, object> defaults = new System.Collections.Generic.Dictionary<string, object>(); // These are the values that are used if we haven't fetched data from the // server // yet, or if we ask for values that the server doesn't have: defaults.Add("config_test_string", "default local string"); defaults.Add("config_test_int", 1); defaults.Add("config_test_float", 1.0); defaults.Add("config_test_bool", false); Firebase.RemoteConfig.FirebaseRemoteConfig.DefaultInstance.SetDefaultsAsync(defaults) .ContinueWithOnMainThread(task => {
ขั้นตอนที่ 3: รับค่าพารามิเตอร์เพื่อใช้ในแอป
ตอนนี้คุณรับค่าพารามิเตอร์จากออบเจ็กต์ Remote Config ได้แล้ว หากตั้งค่าไว้
ในแบ็กเอนด์ Remote Config ดึงข้อมูลมาและเปิดใช้งานแล้ว
ค่าเหล่านั้นจะมีให้ในแอป ไม่เช่นนั้น คุณจะได้รับพารามิเตอร์ในแอป
ค่าที่กำหนดค่าโดยใช้
SetDefaultsAsync()
หากต้องการค่าเหล่านี้ ให้ใช้ GetValue()
การระบุคีย์พารามิเตอร์เป็นอาร์กิวเมนต์ ซึ่งจะแสดง
ConfigValue
ที่มีพร็อพเพอร์ตี้ในการแปลงค่าเป็นประเภทฐานที่หลากหลาย
ขั้นตอนที่ 4: ตั้งค่าค่าพารามิเตอร์
- เปิดโปรเจ็กต์ในคอนโซล Firebase
- เลือก Remote Config จากเมนูเพื่อดูแดชบอร์ดของ Remote Config
- กำหนดพารามิเตอร์ด้วยชื่อเดียวกับพารามิเตอร์ที่คุณกำหนดใน แอปของคุณ สำหรับแต่ละพารามิเตอร์ คุณสามารถกำหนดค่าเริ่มต้น (ซึ่ง ลบล้างค่าเริ่มต้นในแอป) และมูลค่าแบบมีเงื่อนไข ดูข้อมูลเพิ่มเติมได้ที่ พารามิเตอร์และเงื่อนไข Remote Config รายการ
ขั้นตอนที่ 5: ดึงข้อมูลและเปิดใช้งานค่า (ตามความจำเป็น)
หากต้องการดึงข้อมูลค่าพารามิเตอร์จากแบ็กเอนด์ Remote Config ให้เรียกเมธอด
FetchAsync()
ระบบจะดึงข้อมูลค่าใดก็ตามที่คุณกำหนดไว้ในแบ็กเอนด์และ
แคชในออบเจ็กต์ Remote Config
// Start a fetch request. // FetchAsync only fetches new data if the current data is older than the provided // timespan. Otherwise it assumes the data is "recent enough", and does nothing. // By default the timespan is 12 hours, and for production apps, this is a good // number. For this example though, it's set to a timespan of zero, so that // changes in the console will always show up immediately. public Task FetchDataAsync() { DebugLog("Fetching data..."); System.Threading.Tasks.Task fetchTask = Firebase.RemoteConfig.FirebaseRemoteConfig.DefaultInstance.FetchAsync( TimeSpan.Zero); return fetchTask.ContinueWithOnMainThread(FetchComplete); }
ในโค้ดด้านบน FetchComplete
เป็นเมธอดที่มีลายเซ็นตรงกับ
พารามิเตอร์ของหนึ่งใน
โอเวอร์โหลด
จาก ContinueWithOnMainThread()
ในโค้ดตัวอย่างด้านล่าง เมธอด FetchComplete
ถูกส่งผ่านงานก่อนหน้า
(fetchTask
) ซึ่งอนุญาตให้ FetchComplete
พิจารณาได้ว่าแสดงจบแล้วหรือไม่
โค้ดใช้
Info.LastFetchStatus
เพื่อดูว่าการดำเนินการเสร็จสิ้นด้วยหรือไม่ หากใช่
ระบบจะเปิดใช้งานค่าพารามิเตอร์ Remote Config โดยใช้ ActivateAsync()
private void FetchComplete(Task fetchTask) {
if (!fetchTask.IsCompleted) {
Debug.LogError("Retrieval hasn't finished.");
return;
}
var remoteConfig = FirebaseRemoteConfig.DefaultInstance;
var info = remoteConfig.Info;
if(info.LastFetchStatus != LastFetchStatus.Success) {
Debug.LogError($"{nameof(FetchComplete)} was unsuccessful\n{nameof(info.LastFetchStatus)}: {info.LastFetchStatus}");
return;
}
// Fetch successful. Parameter values must be activated to use.
remoteConfig.ActivateAsync()
.ContinueWithOnMainThread(
task => {
Debug.Log($"Remote data loaded and ready for use. Last fetch time {info.FetchTime}.");
});
}
ค่าที่ดึงข้อมูลโดยใช้
FetchAsync()
ถูกแคชไว้ในเครื่องเมื่อการดึงข้อมูลเสร็จสมบูรณ์ แต่จะไม่พร้อมใช้งานจนกว่า
ActivateAsync()
ถูกเรียกใช้ วิธีนี้จะช่วยให้คุณมั่นใจได้ว่าจะไม่มีการใช้ค่าใหม่
ระหว่างการคำนวณหรือในช่วงเวลาอื่นๆ ที่อาจก่อให้เกิดปัญหาหรือทำให้แปลกประหลาด
พฤติกรรมของคุณ
ขั้นตอนที่ 6: ฟังข้อมูลอัปเดตแบบเรียลไทม์
หลังจากดึงข้อมูลค่าพารามิเตอร์แล้ว คุณจะใช้ Remote Config แบบเรียลไทม์เพื่อทำสิ่งต่อไปนี้ได้ ฟังอัปเดตจากแบ็กเอนด์ Remote Config เรียลไทม์ Remote Config ส่งสัญญาณไปยังอุปกรณ์ที่เชื่อมต่อเมื่อมีอัปเดตและ ดึงข้อมูลการเปลี่ยนแปลงโดยอัตโนมัติหลังจากที่คุณเผยแพร่ Remote Config ใหม่ เวอร์ชัน
SDK Unity Firebase v11.0.0 ขึ้นไปสำหรับ แพลตฟอร์ม Android และ Apple
- เพิ่ม
OnConfigUpdateListener
ในแอปเพื่อเริ่มฟังข้อมูลอัปเดต และดึงข้อมูลค่าพารามิเตอร์ใหม่หรือที่อัปเดตโดยอัตโนมัติ จากนั้นสร้างConfigUpdateListenerEventHandler
เพื่อประมวลผลเหตุการณ์การอัปเดต ดังต่อไปนี้ ตัวอย่าง ฟังการอัปเดตและใช้ค่าที่ดึงข้อมูลมาใหม่เพื่อแสดง ข้อความต้อนรับที่อัปเดตใหม่
// Invoke the listener. void Start() { Firebase.RemoteConfig.FirebaseRemoteConfig.DefaultInstance.OnConfigUpdateListener += ConfigUpdateListenerEventHandler; } // Handle real-time Remote Config events. void ConfigUpdateListenerEventHandler( object sender, Firebase.RemoteConfig.ConfigUpdateEventArgs args) { if (args.Error != Firebase.RemoteConfig.RemoteConfigError.None) { Debug.Log(String.Format("Error occurred while listening: {0}", args.Error)); return; } Debug.Log("Updated keys: " + string.Join(", ", args.UpdatedKeys)); // Activate all fetched values and then display a welcome message. remoteConfig.ActivateAsync().ContinueWithOnMainThread( task => { DisplayWelcomeMessage(); }); } // Stop the listener. void OnDestroy() { Firebase.RemoteConfig.FirebaseRemoteConfig.DefaultInstance.OnConfigUpdateListener -= ConfigUpdateListenerEventHandler; }
ครั้งต่อไปที่คุณเผยแพร่ Remote Config เวอร์ชันใหม่ อุปกรณ์ที่ กำลังใช้แอปอยู่และรอการเปลี่ยนแปลงจะเรียกใช้ตัวแฮนเดิลการเสร็จสิ้น
ขั้นตอนถัดไป
หากยังไม่ได้สำรวจ โปรดดู Remote Config กรณีการใช้งาน แล้วลองดูที่ แนวคิดหลักและเอกสารกลยุทธ์ขั้นสูง ได้แก่