เริ่มต้นใช้งานการกำหนดค่าระยะไกลของ Firebase


คุณใช้การกำหนดค่าระยะไกลของ Firebase เพื่อกำหนดพารามิเตอร์ในแอปได้และ อัปเดตค่าในระบบคลาวด์ ซึ่งทำให้คุณสามารถแก้ไขลักษณะที่ปรากฏ พฤติกรรมของแอปโดยไม่เผยแพร่การอัปเดตแอป

ไลบรารีการกำหนดค่าระยะไกลใช้เพื่อเก็บค่าพารามิเตอร์เริ่มต้นในแอป ดึงข้อมูลค่าพารามิเตอร์ที่อัปเดตจากแบ็กเอนด์การกำหนดค่าระยะไกลและควบคุม เมื่อค่าที่ดึงมาพร้อมใช้งานสำหรับแอป หากต้องการทราบข้อมูลเพิ่มเติม ดูกลยุทธ์การโหลดการกำหนดค่าระยะไกล

คู่มือนี้จะอธิบายถึง ผ่านขั้นตอนต่างๆ เพื่อเริ่มต้นใช้งาน และแสดงโค้ดตัวอย่าง ซึ่งทั้งหมดนี้คือ สามารถโคลนหรือดาวน์โหลดจาก firebase/quickstart-unity ที่เก็บ GitHub

ขั้นตอนที่ 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: รับค่าพารามิเตอร์เพื่อใช้ในแอป

ตอนนี้คุณสามารถรับค่าพารามิเตอร์จากออบเจ็กต์การกำหนดค่าระยะไกลได้แล้ว หากตั้งค่าไว้ ในแบ็กเอนด์การกำหนดค่าระยะไกล ได้ดึงข้อมูลออกไปแล้วเปิดใช้งาน ค่าเหล่านั้นจะมีให้ในแอป ไม่เช่นนั้น คุณจะได้รับพารามิเตอร์ในแอป ค่าที่กำหนดค่าโดยใช้ SetDefaultsAsync().

หากต้องการค่าเหล่านี้ ให้ใช้ GetValue() การระบุคีย์พารามิเตอร์เป็นอาร์กิวเมนต์ ซึ่งจะแสดง ConfigValue, ที่มีพร็อพเพอร์ตี้ในการแปลงค่าเป็นประเภทฐานที่หลากหลาย

ขั้นตอนที่ 4: ตั้งค่าค่าพารามิเตอร์

  1. เปิดโปรเจ็กต์ในคอนโซล Firebase
  2. เลือกการกำหนดค่าระยะไกลจากเมนูเพื่อดูแดชบอร์ดการกำหนดค่าระยะไกล
  3. กำหนดพารามิเตอร์ด้วยชื่อเดียวกับพารามิเตอร์ที่คุณกำหนดใน แอปของคุณ สำหรับแต่ละพารามิเตอร์ คุณสามารถกำหนดค่าเริ่มต้น (ซึ่ง ลบล้างค่าเริ่มต้นในแอป) และมูลค่าแบบมีเงื่อนไข ดูข้อมูลเพิ่มเติมได้ที่ พารามิเตอร์และเงื่อนไขการกำหนดค่าระยะไกล

ขั้นตอนที่ 5: ดึงข้อมูลและเปิดใช้งานค่า (ตามความจำเป็น)

หากต้องการดึงค่าพารามิเตอร์จากแบ็กเอนด์การกำหนดค่าระยะไกล ให้เรียกเมธอด 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() ถูกเรียกใช้ วิธีนี้จะช่วยให้คุณมั่นใจได้ว่าจะไม่มีการใช้ค่าใหม่ ระหว่างการคำนวณหรือในช่วงเวลาอื่นๆ ที่อาจก่อให้เกิดปัญหาหรือทำให้แปลกประหลาด พฤติกรรมของคุณ

ขั้นตอนที่ 6: ฟังข้อมูลอัปเดตแบบเรียลไทม์

หลังจากดึงข้อมูลค่าพารามิเตอร์แล้ว คุณจะใช้การกำหนดค่าระยะไกลแบบเรียลไทม์เพื่อทำสิ่งต่อไปนี้ได้ รอฟังอัปเดตจากแบ็กเอนด์การกำหนดค่าระยะไกล เรียลไทม์ สัญญาณการกำหนดค่าระยะไกลไปยังอุปกรณ์ที่เชื่อมต่อเมื่อมีการอัปเดต และ ดึงข้อมูลการเปลี่ยนแปลงโดยอัตโนมัติหลังจากที่คุณเผยแพร่การกำหนดค่าระยะไกลใหม่ เวอร์ชัน

Firebase Unity SDK v11.0.0 ขึ้นไปรองรับการอัปเดตแบบเรียลไทม์สำหรับ แพลตฟอร์ม Android และ Apple

  1. เพิ่ม 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;
}

ครั้งต่อไปที่คุณเผยแพร่การกำหนดค่าระยะไกลเวอร์ชันใหม่ อุปกรณ์ที่ กำลังใช้แอปอยู่และรอการเปลี่ยนแปลงจะเรียกใช้ตัวแฮนเดิลการเสร็จสิ้น

ขั้นตอนถัดไป

หากยังไม่ได้สำรวจการกำหนดค่าระยะไกล ให้ดูการกำหนดค่าระยะไกล กรณีการใช้งาน แล้วลองดูที่ แนวคิดหลักและเอกสารกลยุทธ์ขั้นสูง ได้แก่