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