Bắt đầu với Cấu hình từ xa Firebase


Bạn có thể sử dụng Cấu hình từ xa Firebase để xác định các tham số trong ứng dụng của mình và cập nhật giá trị của chúng trên đám mây, cho phép bạn sửa đổi giao diện và hoạt động của ứng dụng mà không cần phân phối bản cập nhật ứng dụng.

Thư viện Cấu hình từ xa được dùng để lưu trữ các giá trị tham số mặc định trong ứng dụng, tìm nạp các giá trị tham số được cập nhật từ phần phụ trợ Cấu hình từ xa và kiểm soát thời điểm cung cấp các giá trị được tìm nạp cho ứng dụng của bạn. Để tìm hiểu thêm, hãy xem Chiến lược tải cấu hình từ xa .

Hướng dẫn này sẽ hướng dẫn bạn các bước để bắt đầu và cung cấp một số mã mẫu, tất cả đều có sẵn để sao chép hoặc tải xuống từ kho lưu trữ GitHub của firebase/quickstart-unity .

Bước 1: Thêm cấu hình từ xa vào ứng dụng của bạn

Trước khi có thể sử dụng Remote Config , bạn cần:

  • Đăng ký dự án Unity của bạn và định cấu hình nó để sử dụng Firebase.

    • Nếu dự án Unity của bạn đã sử dụng Firebase thì dự án đó đã được đăng ký và định cấu hình cho Firebase.

    • Nếu bạn không có dự án Unity, bạn có thể tải xuống ứng dụng mẫu .

  • Thêm SDK Unity Firebase (cụ thể là FirebaseRemoteConfig.unitypackage ) vào dự án Unity của bạn.

Lưu ý rằng việc thêm Firebase vào dự án Unity của bạn bao gồm các nhiệm vụ cả trong bảng điều khiển Firebase và trong dự án Unity mở của bạn (ví dụ: bạn tải xuống tệp cấu hình Firebase từ bảng điều khiển, sau đó chuyển chúng vào dự án Unity của bạn).

Bước 2: Đặt giá trị tham số mặc định trong ứng dụng

Bạn có thể đặt các giá trị tham số mặc định trong ứng dụng trong đối tượng Cấu hình từ xa để ứng dụng của bạn hoạt động như dự định trước khi kết nối với phần phụ trợ Cấu hình từ xa và để các giá trị mặc định khả dụng nếu không có giá trị nào được đặt trong phần phụ trợ.

Để thực hiện việc này, hãy tạo một từ điển chuỗi và điền vào đó các cặp khóa/giá trị đại diện cho các giá trị mặc định mà bạn muốn thêm. Nếu đã định cấu hình các giá trị tham số phụ trợ Cấu hình từ xa, bạn có thể tải xuống tệp chứa các cặp khóa/giá trị này và sử dụng tệp đó để xây dựng từ điển chuỗi của mình. Để biết thêm thông tin, hãy xem Tải xuống mặc định mẫu Cấu hình từ xa .

(Thuộc tính không phải chuỗi sẽ được chuyển đổi thành loại thuộc tính khi SetDefaultsAsync() được gọi).

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 => {

Bước 3: Nhận các giá trị tham số để sử dụng trong ứng dụng của bạn

Bây giờ bạn có thể nhận các giá trị tham số từ đối tượng Remote Config. Nếu bạn đặt các giá trị trong phần phụ trợ Cấu hình từ xa, tìm nạp chúng rồi kích hoạt chúng thì những giá trị đó sẽ có sẵn cho ứng dụng của bạn. Nếu không, bạn sẽ nhận được các giá trị thông số trong ứng dụng được định cấu hình bằng SetDefaultsAsync() .

Để có được những giá trị này, hãy sử dụng GetValue() , cung cấp khóa tham số làm đối số. Điều này trả về một ConfigValue , có các thuộc tính để chuyển đổi giá trị thành các loại cơ sở khác nhau.

Bước 4: Đặt giá trị tham số

  1. Trong bảng điều khiển Firebase , hãy mở dự án của bạn.
  2. Chọn Cấu hình từ xa từ menu để xem bảng thông tin Cấu hình từ xa.
  3. Xác định các tham số có cùng tên với các tham số mà bạn đã xác định trong ứng dụng của mình. Đối với mỗi tham số, bạn có thể đặt giá trị mặc định (cuối cùng sẽ ghi đè giá trị mặc định trong ứng dụng) và các giá trị có điều kiện. Để tìm hiểu thêm, hãy xem các thông số và điều kiện Cấu hình từ xa .

Bước 5: Tìm nạp và kích hoạt các giá trị (nếu cần)

Để tìm nạp các giá trị tham số từ phần phụ trợ Cấu hình từ xa, hãy gọi phương thức FetchAsync() . Mọi giá trị bạn đặt trên chương trình phụ trợ đều được tìm nạp và lưu vào bộ đệm trong đối tượng Cấu hình từ xa.

// 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);
}

Trong đoạn mã trên, FetchComplete là một phương thức có chữ ký khớp với các tham số của một trong các tình trạng quá tải của ContinueWithOnMainThread() .

Trong mã mẫu bên dưới, phương thức FetchComplete được chuyển tác vụ trước đó ( fetchTask ), cho phép FetchComplete xác định xem tác vụ đã hoàn thành hay chưa. Mã này sử dụng Info.LastFetchStatus để xác định xem quá trình kết thúc có thành công hay không . Nếu vậy, các giá trị tham số Cấu hình từ xa sẽ được kích hoạt bằng 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}.");
    });
}

Các giá trị được tìm nạp bằng FetchAsync() được lưu vào bộ nhớ đệm cục bộ khi quá trình tìm nạp hoàn tất nhưng không khả dụng cho đến khi ActivateAsync() được gọi. Điều này cho phép bạn đảm bảo rằng các giá trị mới không được áp dụng trong quá trình tính toán hoặc vào những thời điểm khác có thể gây ra sự cố hoặc hành vi lạ.

Bước 6: Nghe cập nhật theo thời gian thực

Sau khi tìm nạp các giá trị tham số, bạn có thể sử dụng Cấu hình từ xa theo thời gian thực để lắng nghe các bản cập nhật từ chương trình phụ trợ Cấu hình từ xa. Tín hiệu Cấu hình từ xa theo thời gian thực tới các thiết bị được kết nối khi có bản cập nhật và tự động tìm nạp các thay đổi sau khi bạn xuất bản phiên bản Cấu hình từ xa mới.

Các bản cập nhật theo thời gian thực được hỗ trợ bởi Firebase Unity SDK v11.0.0+ trở lên dành cho nền tảng Android và Apple.

  1. Trong ứng dụng của bạn, hãy thêm OnConfigUpdateListener để bắt đầu lắng nghe các bản cập nhật và tự động tìm nạp mọi giá trị thông số mới hoặc cập nhật. Sau đó, tạo ConfigUpdateListenerEventHandler để xử lý các sự kiện cập nhật. Ví dụ sau lắng nghe các bản cập nhật và sử dụng các giá trị mới được tìm nạp để hiển thị thông báo chào mừng đã cập nhật.
// 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;
}

Lần tới khi bạn xuất bản phiên bản mới của Cấu hình từ xa, các thiết bị đang chạy ứng dụng của bạn và lắng nghe các thay đổi sẽ gọi trình xử lý hoàn thành.

Bước tiếp theo

Nếu bạn chưa có, hãy khám phá các trường hợp sử dụng cấu hình từ xa và xem xét một số khái niệm chính và tài liệu chiến lược nâng cao, bao gồm: