Catch up on highlights from Firebase at Google I/O 2023. Learn more

เริ่มต้นใช้งาน Firebase Remote Config


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

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

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

ขั้นตอนที่ 1: เพิ่มการกำหนดค่าระยะไกลในแอปของคุณ

ก่อนที่คุณจะสามารถใช้ Remote Config คุณต้อง:

  • ลงทะเบียนโครงการ Unity ของคุณและกำหนดค่าเพื่อใช้ Firebase

    • หากโปรเจ็กต์ Unity ของคุณใช้ Firebase อยู่แล้ว แสดงว่ามีการลงทะเบียนและกำหนดค่าสำหรับ Firebase แล้ว

    • หากคุณไม่มีโครงการ Unity คุณสามารถดาวน์โหลด แอปตัวอย่างได้

  • เพิ่ม Firebase Unity SDK (โดยเฉพาะ FirebaseRemoteConfig.unitypackage ) ในโครงการ Unity ของคุณ

โปรดทราบว่าการเพิ่ม Firebase ในโครงการ Unity ของคุณเกี่ยวข้องกับงานทั้งใน คอนโซล Firebase และในโครงการ Unity แบบเปิดของคุณ (เช่น คุณดาวน์โหลดไฟล์การกำหนดค่า Firebase จากคอนโซล จากนั้นย้ายไฟล์เหล่านี้ไปยังโครงการ Unity ของคุณ)

ขั้นตอนที่ 2: ตั้งค่าพารามิเตอร์เริ่มต้นในแอป

คุณสามารถตั้งค่าพารามิเตอร์เริ่มต้นในแอปในออบเจ็กต์ 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: รับค่าพารามิเตอร์เพื่อใช้ในแอปของคุณ

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

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

ขั้นตอนที่ 4: เชื่อมต่อแอปของคุณในคอนโซล Firebase

ใน คอนโซล Firebase ให้เพิ่มแอปของคุณในโครงการ Firebase

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

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

ขั้นตอนที่ 6: ดึงข้อมูลและเปิดใช้งานค่า (ตามต้องการ)

หากต้องการดึงค่าพารามิเตอร์จากแบ็กเอนด์การกำหนดค่าระยะไกล ให้เรียกเมธอด [ FetchAsync() ][fetch] ค่าใดๆ ที่คุณตั้งไว้บนแบ็กเอนด์จะถูกดึงข้อมูลและแคชไว้ในวัตถุการกำหนดค่าระยะไกล

// 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() ][fetch] จะถูกแคชไว้ในเครื่องเมื่อการดึงข้อมูลเสร็จสิ้น แต่จะไม่สามารถใช้งานได้จนกว่าจะมีการเรียกใช้ ActivateAsync() ซึ่งช่วยให้คุณมั่นใจได้ว่าค่าใหม่จะไม่ถูกนำไปใช้ระหว่างการคำนวณ หรือในเวลาอื่นๆ ที่อาจทำให้เกิดปัญหาหรือลักษณะการทำงานที่ผิดปกติ

ขั้นตอนที่ 7: ฟังการอัปเดตตามเวลาจริง

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

การอัปเดตแบบเรียลไทม์รองรับโดย 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;
}

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

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

If you haven't already, explore the Remote Config use cases , and take a look at some of the key concepts and advanced strategies documentation, including: