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 các giá trị của chúng trong đám mây, cho phép bạn sửa đổi sự xuất hiện và hành vi của ứng dụng mà không cần phân phối cập nhật ứng dụng. Hướng dẫn này hướng dẫn bạn qua các bước để bắt đầu và cung cấp một số mã mẫu, tất cả đều có sẵn để nhân bản hoặc tải xuống từ kho lưu trữ Github của FireBase/QuickStart-ios .

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

  1. Nếu bạn chưa có, hãy thêm Firebase vào dự án Apple của bạn .

  2. Đối với cấu hình từ xa, Google Analytics là bắt buộc để nhắm mục tiêu có điều kiện của các phiên bản ứng dụng vào các thuộc tính và đối tượng người dùng. Đảm bảo rằng bạn kích hoạt Google Analytics trong dự án của bạn.

  3. Tạo đối tượng cấu hình từ xa Singleton, như được hiển thị trong ví dụ sau:

    Nhanh

    remoteConfig = RemoteConfig.remoteConfig()
    let settings = RemoteConfigSettings()
    settings.minimumFetchInterval = 0
    remoteConfig.configSettings = settings

    Mục tiêu-C

    self.remoteConfig = [FIRRemoteConfig remoteConfig];
    FIRRemoteConfigSettings *remoteConfigSettings = [[FIRRemoteConfigSettings alloc] init];
    remoteConfigSettings.minimumFetchInterval = 0;
    self.remoteConfig.configSettings = remoteConfigSettings;

Đối tượng này được sử 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ụ trợ cấu hình từ xa và điều khiển khi các giá trị được tìm nạp được cung cấp cho ứng dụng của bạn.

Trong quá trình phát triển, nên đặt khoảng thời gian tìm nạp tối thiểu tương đối thấp. Xem Throttling để biết thêm thông tin.

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 nó kết nối với phụ trợ cấu hình từ xa và do đó các giá trị mặc định có sẵn nếu không được đặt trong phần phụ trợ.

  1. Xác định một tập hợp các tên tham số và các giá trị tham số mặc định bằng cách sử dụng đối tượng NSDictionary hoặc tệp plist .

    Nếu bạn đã cấu hình các giá trị tham số phụ trợ config Remote Config, bạn có thể tải xuống một tệp plist được tạo bao gồm tất cả các giá trị mặc định và lưu nó vào dự án Xcode của bạn.

    NGHỈ NGƠI

    curl --compressed -D headers -H "Authorization: Bearer token -X GET https://firebaseremoteconfig.googleapis.com/v1/projects/my-project-id/remoteConfig:downloadDefaults?format=PLIST -o RemoteConfigDefaults.plist
    

    Bảng điều khiển Firebase

    1. Trong tab Tham số , hãy mở menu và chọn Tải xuống các giá trị mặc định .

    2. Khi được nhắc, bật .plist cho iOS , sau đó nhấp vào Tải xuống Tệp .

  2. Thêm các giá trị này vào đối tượng cấu hình từ xa bằng setDefaults: Ví dụ sau đây đặt các giá trị mặc định trong ứng dụng từ tệp plist:

    Nhanh

    remoteConfig.setDefaults(fromPlist: "RemoteConfigDefaults")

    Mục tiêu-C

    [self.remoteConfig setDefaultsFromPlistFileName:@"RemoteConfigDefaults"];

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 cấu hình từ xa. Nếu sau đó bạn đặt các giá trị trong phần phụ trợ cấu hình từ xa, lấy chúng và sau đó kích hoạt chúng, các giá trị đó có sẵn cho ứng dụng của bạn. Mặt khác, bạn nhận được các giá trị tham số trong ứng dụng được định cấu hình bằng setDefaults: Để có được các giá trị này, hãy gọi configValueForKey: Phương thức, cung cấp khóa tham số làm đối số.

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

Sử dụng bảng điều khiển Firebase hoặc API phụ trợ config từ xa , bạn có thể tạo các giá trị mặc định phụ trợ mới ghi đè các giá trị trong ứng dụng theo logic có điều kiện hoặc mục tiêu người dùng mong muốn của bạn. Phần này hướng dẫn bạn qua các bước bảng điều khiển Firebase để tạo các giá trị này.

  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 điều khiển 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à bạn cũng có thể đặt các giá trị có điều kiện. Để tìm hiểu thêm, hãy xem các tham 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ị

Để tìm nạp các giá trị tham số từ cấu hình từ xa, hãy gọi fetchWithCompletionHandler: hoặc fetchWithExpirationDuration:completionHandler: Phương thức. Bất kỳ giá trị nào bạn đặt trên phụ trợ đều được tìm nạp và lưu trong bộ nhớ cache trong đối tượng cấu hình từ xa.

Đối với các trường hợp bạn muốn tìm nạp và kích hoạt các giá trị trong một cuộc gọi, hãy sử dụng fetchAndActivateWithCompletionHandler:

Ví dụ này lấy các giá trị từ phụ trợ config từ xa (không có giá trị được lưu trong bộ nhớ activateWithCompletionHandler:

Nhanh

remoteConfig.fetch { (status, error) -> Void in
  if status == .success {
    print("Config fetched!")
    self.remoteConfig.activate { changed, error in
      // ...
    }
  } else {
    print("Config not fetched")
    print("Error: \(error?.localizedDescription ?? "No error available.")")
  }
  self.displayWelcome()
}

Mục tiêu-C

[self.remoteConfig fetchWithCompletionHandler:^(FIRRemoteConfigFetchStatus status, NSError *error) {
    if (status == FIRRemoteConfigFetchStatusSuccess) {
        NSLog(@"Config fetched!");
      [self.remoteConfig activateWithCompletion:^(BOOL changed, NSError * _Nullable error) {
        if (error != nil) {
          NSLog(@"Activate error: %@", error.localizedDescription);
        } else {
          dispatch_async(dispatch_get_main_queue(), ^{
            [self displayWelcome];
          });
        }
      }];
    } else {
        NSLog(@"Config not fetched");
        NSLog(@"Error %@", error.localizedDescription);
    }
}];

Bởi vì các giá trị tham số được cập nhật này ảnh hưởng đến hành vi và sự xuất hiện của ứng dụng của bạn, bạn nên kích hoạt các giá trị được tìm nạp tại một thời điểm đảm bảo trải nghiệm suôn sẻ cho người dùng của bạn, chẳng hạn như lần tiếp theo người dùng mở ứng dụng của bạn. Xem các chiến lược tải cấu hình từ xa để biết thêm thông tin và ví dụ.

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

Sau khi bạn tìm nạp các giá trị tham số, bạn có thể sử dụng cấu hình từ xa thời gian thực để nghe các bản cập nhật từ phụ trợ cấu hình từ xa. Tín hiệu cấu hình từ xa thời gian thực đến các thiết bị được kết nối khi có sẵn cá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ập nhật thời gian thực được hỗ trợ bởi SDK Firebase cho các nền tảng Apple V10.7.0+ trở lên.

  1. Trong ứng dụng của bạn, hãy gọi addOnConfigUpdateListener để bắt đầu nghe các bản cập nhật và tự động tìm thấy bất kỳ giá trị tham số mới hoặc cập nhật nào. Ví dụ sau đây lắng nghe các bản cập nhật và khi activateWithCompletionHandler được gọi, 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 cập nhật.

    Nhanh

    remoteConfig.addOnConfigUpdateListener { configUpdate, error in
      guard let configUpdate, error == nil else {
        print("Error listening for config updates: \(error)")
      }
    
      print("Updated keys: \(configUpdate.updatedKeys)")
    
      self.remoteConfig.activate { changed, error in
        guard error == nil else { return self.displayError(error) }
        DispatchQueue.main.async {
          self.displayWelcome()
        }
      }
    }
    

    Mục tiêu-C

    __weak __typeof__(self) weakSelf = self;
    [self.remoteConfig addOnConfigUpdateListener:^(FIRRemoteConfigUpdate * _Nonnull configUpdate, NSError * _Nullable error) {
      if (error != nil) {
        NSLog(@"Error listening for config updates %@", error.localizedDescription);
      } else {
        NSLog(@"Updated keys: %@", configUpdate.updatedKeys);
    
        __typeof__(self) strongSelf = weakSelf;
        [strongSelf.remoteConfig activateWithCompletion:^(BOOL changed, NSError * _Nullable error) {
          if (error != nil) {
            NSLog(@"Activate error %@", error.localizedDescription);
          }
    
          dispatch_async(dispatch_get_main_queue(), ^{
            [strongSelf displayWelcome];
          });
        }];
      }
    }];
    
  2. Lần tới khi bạn xuất bản một phiên bản mới của cấu hình từ xa của bạn, các thiết bị đang chạy ứng dụng của bạn và nghe các thay đổi sẽ gọi trình xử lý hoàn thành.

Điều chỉnh

Nếu một ứng dụng tìm nạp quá nhiều lần trong một khoảng thời gian ngắn, thì các cuộc gọi tìm kiếm sẽ được điều chỉnh và SDK trả về FIRRemoteConfigFetchStatusThrottled . Trước SDK phiên bản 6.3.0, giới hạn là 5 yêu cầu tìm nạp trong cửa sổ 60 phút (phiên bản mới hơn có giới hạn cho phép nhiều hơn).

Trong quá trình phát triển ứng dụng, bạn có thể muốn tìm nạp thường xuyên hơn để làm mới bộ đệm rất thường xuyên (nhiều lần mỗi giờ) để cho phép bạn nhanh chóng lặp lại khi bạn phát triển và kiểm tra ứng dụng của mình. Cập nhật cấu hình từ xa thời gian thực tự động bỏ qua bộ đệm khi cấu hình được cập nhật trên máy chủ. Để phù hợp với việc lặp lại nhanh chóng cho một dự án với nhiều nhà phát triển, bạn có thể tạm thời thêm một thuộc tính FIRRemoteConfigSettings với khoảng thời gian tìm nạp tối thiểu thấp ( MinimumFetchInterval ) trong ứng dụng của bạn.

Khoảng thời gian tìm nạp sản xuất mặc định và được đề xuất cho cấu hình từ xa là 12 giờ, điều đó có nghĩa là các cấu hình sẽ không được tìm nạp từ phần phụ trợ nhiều lần trong cửa sổ 12 giờ, bất kể thực sự có bao nhiêu cuộc gọi tìm nạp. Cụ thể, khoảng thời gian tìm nạp tối thiểu được xác định theo thứ tự sau:

  1. Tham số trong fetch(long)
  2. Tham số trong FIRRemoteConfigSettings.MinimumFetchInterval
  3. Giá trị mặc định là 12 giờ

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: