| เลือกแพลตฟอร์ม: | iOS+ Android Web Flutter Unity C++ |
คุณสามารถใช้ Firebase Remote Config เพื่อกำหนดพารามิเตอร์ในแอปและ อัปเดตค่าในระบบคลาวด์ ซึ่งจะช่วยให้คุณปรับเปลี่ยนรูปลักษณ์และ ลักษณะการทำงานของแอปได้โดยไม่ต้องเผยแพร่การอัปเดตแอป
ไลบรารี 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 console
- เลือก 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 เวอร์ชันใหม่
Firebase Unity SDK เวอร์ชัน 11.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 เวอร์ชันใหม่ อุปกรณ์ที่ เรียกใช้แอปและรับฟังการเปลี่ยนแปลงจะเรียกใช้ตัวแฮนเดิลการดำเนินการให้เสร็จสมบูรณ์