คุณใช้ 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 เวอร์ชันใหม่
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 เวอร์ชันใหม่ อุปกรณ์ที่ เรียกใช้แอปและรอฟังการเปลี่ยนแปลงจะเรียกตัวแฮนเดิลการดำเนินการให้เสร็จสมบูรณ์
ขั้นตอนถัดไป
หากยังไม่ได้สำรวจ Remote Config กรณีการใช้งาน และดูเอกสารประกอบเกี่ยวกับแนวคิดหลักและกลยุทธ์ขั้นสูงบางส่วน ซึ่งรวมถึง