คุณสามารถใช้ Firebase Remote Config เพื่อกำหนดพารามิเตอร์ในแอปและอัปเดตค่าในระบบคลาวด์ ซึ่งช่วยให้คุณปรับเปลี่ยนรูปลักษณ์และลักษณะการทำงานของแอปได้โดยไม่ต้องกระจายการอัปเดตแอป
ไลบรารีการกำหนดค่าระยะไกลใช้เพื่อจัดเก็บค่าพารามิเตอร์เริ่มต้นในแอป ดึงค่าพารามิเตอร์ที่อัปเดตจากแบ็กเอนด์การกำหนดค่าระยะไกล และควบคุมเมื่อค่าที่ดึงมาจะพร้อมใช้งานสำหรับแอปของคุณ หากต้องการเรียนรู้เพิ่มเติม โปรดดู กลยุทธ์การโหลดการกำหนดค่าระยะไกล
คู่มือนี้จะอธิบายขั้นตอนในการเริ่มต้นใช้งานและให้โค้ดตัวอย่างบางส่วน ซึ่งทั้งหมดนี้พร้อมให้โคลนหรือดาวน์โหลดได้จากที่เก็บ GitHub ของ firebase/quickstart-unity
ขั้นตอนที่ 1: เพิ่มการกำหนดค่าระยะไกลให้กับแอปของคุณ
ก่อนที่คุณจะสามารถใช้ การกำหนดค่าระยะไกล ได้ คุณต้อง:
ลงทะเบียนโปรเจ็กต์ Unity ของคุณและกำหนดค่าให้ใช้ Firebase
หากโปรเจ็กต์ Unity ของคุณใช้ Firebase อยู่แล้ว แสดงว่ามีการลงทะเบียนและกำหนดค่าสำหรับ Firebase แล้ว
หากคุณไม่มีโปรเจ็กต์ Unity คุณสามารถดาวน์โหลด แอปตัวอย่าง ได้
เพิ่ม Firebase Unity SDK (โดยเฉพาะ
FirebaseRemoteConfig.unitypackage
) ให้กับโปรเจ็กต์ Unity ของคุณ
โปรดทราบว่าการเพิ่ม Firebase ให้กับโปรเจ็กต์ Unity ของคุณเกี่ยวข้องกับงานทั้งใน คอนโซล Firebase และในโปรเจ็กต์ Unity ที่เปิดอยู่ของคุณ (เช่น คุณดาวน์โหลดไฟล์การกำหนดค่า Firebase จากคอนโซล จากนั้นย้ายไฟล์เหล่านั้นไปยังโปรเจ็กต์ Unity ของคุณ)
ขั้นตอนที่ 2: ตั้งค่าพารามิเตอร์เริ่มต้นในแอป
คุณสามารถตั้งค่าพารามิเตอร์เริ่มต้นในแอปได้ในออบเจ็กต์การกำหนดค่าระยะไกล เพื่อให้แอปของคุณทำงานตามที่ตั้งใจก่อนที่จะเชื่อมต่อกับแบ็กเอนด์การกำหนดค่าระยะไกล และเพื่อให้ค่าเริ่มต้นพร้อมใช้งานหากไม่มีการตั้งค่าไว้ในแบ็กเอนด์
เมื่อต้องการทำเช่นนี้ ให้สร้างพจนานุกรมสตริง และเติมข้อมูลด้วยคู่คีย์/ค่าที่แสดงถึงค่าเริ่มต้นที่คุณต้องการเพิ่ม หากคุณได้กำหนดค่าพารามิเตอร์แบ็กเอนด์การกำหนดค่าระยะไกลแล้ว คุณสามารถดาวน์โหลดไฟล์ที่มีคู่คีย์/ค่าเหล่านี้ และใช้ไฟล์นั้นเพื่อสร้างพจนานุกรมสตริงของคุณได้ สำหรับข้อมูลเพิ่มเติม โปรดดูที่ ดาวน์โหลดค่าเริ่มต้นเทมเพลตการกำหนดค่าระยะไกล
(คุณสมบัติที่ไม่ใช่สตริงจะถูกแปลงเป็นประเภทของคุณสมบัติเมื่อมีการเรียก 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 หากคุณตั้งค่าในแบ็กเอนด์การกำหนดค่าระยะไกล ดึงข้อมูล จากนั้นเปิดใช้งาน ค่าเหล่านั้นจะพร้อมใช้งานสำหรับแอปของคุณ มิฉะนั้น คุณจะได้รับค่าพารามิเตอร์ในแอปที่กำหนดค่าโดยใช้ SetDefaultsAsync()
หากต้องการรับค่าเหล่านี้ ให้ใช้ GetValue()
โดยระบุคีย์พารามิเตอร์เป็นอาร์กิวเมนต์ ซึ่งจะส่งคืน ConfigValue
ซึ่งมีคุณสมบัติในการแปลงค่าเป็นประเภทฐานต่างๆ
ขั้นตอนที่ 4: เชื่อมต่อแอปของคุณในคอนโซล Firebase
ใน คอนโซล Firebase ให้เพิ่มแอปของคุณไปยังโปรเจ็กต์ Firebase
ขั้นตอนที่ 5: ตั้งค่าพารามิเตอร์
- ใน คอนโซล Firebase ให้เปิดโปรเจ็กต์ของคุณ
- เลือก การกำหนดค่าระยะไกล จากเมนูเพื่อดูแดชบอร์ดการกำหนดค่าระยะไกล
- กำหนดพารามิเตอร์ด้วยชื่อเดียวกับพารามิเตอร์ที่คุณกำหนดในแอปของคุณ สำหรับแต่ละพารามิเตอร์ คุณสามารถตั้งค่าเริ่มต้น (ซึ่งจะแทนที่ค่าเริ่มต้นในแอปในที่สุด) และค่าตามเงื่อนไขได้ หากต้องการเรียนรู้เพิ่มเติม โปรดดูที่ พารามิเตอร์และเงื่อนไขการกำหนดค่าระยะไกล
ขั้นตอนที่ 6: ดึงข้อมูลและเปิดใช้งานค่า (ตามความจำเป็น)
หากต้องการดึงค่าพารามิเตอร์จากแบ็กเอนด์การกำหนดค่าระยะไกล ให้เรียกใช้เมธอด FetchAsync()
ค่าใดๆ ที่คุณตั้งค่าไว้ในแบ็กเอนด์จะถูกดึงออกมาและแคชไว้ในออบเจ็กต์การกำหนดค่าระยะไกล
// 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
เพื่อพิจารณาว่าการดำเนินการเสร็จสิ้นสำเร็จหรือ ไม่ หากเป็นเช่นนั้น ค่าพารามิเตอร์การกำหนดค่าระยะไกลจะถูกเปิดใช้งานโดยใช้ 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()
วิธีนี้ช่วยให้คุณมั่นใจได้ว่าจะไม่ใช้ค่าใหม่ระหว่างการคำนวณ หรือในเวลาอื่นที่อาจทำให้เกิดปัญหาหรือลักษณะการทำงานที่ผิดปกติ
ขั้นตอนที่ 7: ฟังการอัปเดตแบบเรียลไทม์
หลังจากที่คุณดึงค่าพารามิเตอร์แล้ว คุณสามารถใช้การกำหนดค่าระยะไกลแบบเรียลไทม์เพื่อฟังการอัปเดตจากแบ็กเอนด์การกำหนดค่าระยะไกลได้ การกำหนดค่าระยะไกลแบบเรียลไทม์จะส่งสัญญาณไปยังอุปกรณ์ที่เชื่อมต่อเมื่อมีการอัปเดต และดึงข้อมูลการเปลี่ยนแปลงโดยอัตโนมัติหลังจากที่คุณเผยแพร่เวอร์ชันการกำหนดค่าระยะไกลใหม่
การอัปเดตแบบเรียลไทม์ได้รับการสนับสนุนโดย Firebase Unity SDK 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; }
ครั้งถัดไปที่คุณเผยแพร่การกำหนดค่าระยะไกลเวอร์ชันใหม่ อุปกรณ์ที่ใช้งานแอปของคุณและรับฟังการเปลี่ยนแปลงจะเรียกตัวจัดการการดำเนินการเสร็จสิ้น
ขั้นตอนถัดไป
หากคุณยังไม่ได้สำรวจ กรณีการใช้งาน การกำหนดค่าระยะไกลและดูที่แนวคิดหลักและเอกสารกลยุทธ์ขั้นสูงรวมถึง::