Join us for Firebase Summit on November 10, 2021. Tune in to learn how Firebase can help you accelerate app development, release with confidence, and scale with ease. Register

Firebase Remote Config 使用入门

您可以使用 Firebase Remote Config 来定义应用中的参数并在云端更新它们的值。这样,您无需更新应用即可修改应用的外观和行为。本指南逐步介绍了入门步骤并提供了一些示例代码,所有这些代码都可以从 firebase/quickstart-ios GitHub 代码库中克隆或下载。

将 Remote Config 添加到您的应用

  1. 安装适用于 iOS 的 Firebase SDK

  2. 创建单例 Remote Config 对象,如以下示例所示:

    Swift

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

    Objective-C

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

此对象用于存储应用内默认参数值,从 Remote Config 后端提取更新后的参数值,以及控制提取的值何时可供应用使用。

在开发期间,建议设置相对较低的最小提取间隔。如需了解详情,请参阅限制

设置应用内默认参数值

您可以在 Remote Config 对象中设置应用内默认参数值,以便应用在连接到 Remote Config 后端之前能够按预期运行,并且保证在后端中未设置任何值时可以使用默认值。

  1. 使用 NSDictionary 对象或 plist 文件定义一组参数名称和默认参数值。
  2. 使用 setDefaults: 将这些值添加到 Remote Config 对象。以下示例通过 plist 文件设置应用内默认值:

Swift

remoteConfig.setDefaults(fromPlist: "RemoteConfigDefaults")

Objective-C

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

获取要在应用中使用的参数值

现在,您可以从 Remote Config 对象中获取参数值。如果您稍后在 Remote Config 后端中设置这些值,然后提取并激活它们,这些值便可以供您的应用使用。否则,您将获得使用 setDefaults: 方法配置的应用内参数值。要获取这些值,请调用 configValueForKey: 方法,并传入参数键作为调用的实参。

设置参数值

使用 Firebase 控制台或 Remote Config 后端 API,您可以创建新的后端默认值,这些值会根据您希望的条件逻辑或用户定位条件来替换应用内的值。本部分介绍了在 Firebase 控制台中创建这些值的步骤。

  1. Firebase 控制台中,打开您的项目。
  2. 从菜单中选择 Remote Config 以查看 Remote Config 信息中心。
  3. 使用您在应用中指定的参数名称来定义参数。对于每个参数,您可以设置默认值(最终将替换应用内默认值),也可以设置条件值。如需了解详情,请参阅 Remote Config 参数和条件

提取并激活值

如需从 Remote Config 中提取参数值,请调用 fetchWithCompletionHandler:fetchWithExpirationDuration:completionHandler: 方法。系统将提取您在后端中设置的所有值,并将其缓存在 Remote Config 对象中。

如果要在一次调用中提取并激活值,请使用 fetchAndActivateWithCompletionHandler:

以下示例从 Remote Config 后端(而非缓存的值)中提取值,并调用 activateWithCompletionHandler: 以使其可供应用使用:

Swift

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()
}

Objective-C

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

由于这些更新后的参数值会影响应用的行为和外观,因此您应该谨慎选择激活已提取的值的时机,以确保为用户提供流畅的体验,例如在用户下次打开您的应用时激活。如需更多信息和示例,请参阅 Remote Config 加载策略

限制

如果应用在短时间内提取次数太多,则提取调用会受到限制,并且 SDK 会返回 FIRRemoteConfigFetchStatusThrottled。在 SDK 6.3.0 版本之前,应用在 60 分钟的时间段内最多可以发送 5 次提取请求(在较新版本中,这些限制则较为宽松)。

在应用开发期间,您可能需要非常频繁地(每小时多次)刷新缓存,从而可以在开发和测试应用的同时快速迭代。为了让具有众多开发者的项目快速迭代,您可以在应用中临时添加一个具有较短的最小提取间隔 (MinimumFetchInterval) 的 FIRRemoteConfigSettings 属性。

Remote Config 默认和建议的生产提取间隔为 12 小时,这意味着无论实际上调用了多少次提取方法,在 12 小时的时间段内最多从后端提取一次配置。具体而言,系统按以下顺序确定最小提取间隔:

  1. fetch(long) 中的参数
  2. FIRRemoteConfigSettings.MinimumFetchInterval 中的参数
  3. 默认值 12 小时

后续步骤

浏览 Remote Config 使用场景并查看一些关键的概念和高级策略文档(如果您尚未这样做),包括: