获取我们在 Firebase 峰会上发布的所有信息,了解 Firebase 可如何帮助您加快应用开发速度并满怀信心地运行应用。了解详情

开始使用 Firebase 远程配置

使用集合让一切井井有条 根据您的偏好保存内容并对其进行分类。


您可以使用 Firebase Remote Config 在您的应用程序中定义参数并在云端更新它们的值,从而允许您修改应用程序的外观和行为而无需分发应用程序更新。本指南将引导您完成入门步骤并提供一些示例代码,所有这些代码都可以从firebase/quickstart-ios GitHub 存储库中克隆或下载。

第 1 步:将远程配置添加到您的应用

  1. 安装适用于 Apple 平台的 Firebase SDK

  2. 创建单例远程配置对象,如以下示例所示:

    迅速

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

    目标-C

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

此对象用于存储应用内默认参数值、从远程配置后端获取更新的参数值,以及控制何时将获取的值提供给您的应用。

在开发过程中,建议设置一个相对较低的最小获取间隔。有关详细信息,请参阅节流

第 2 步:设置应用内默认参数值

您可以在 Remote Config 对象中设置应用内默认参数值,以便您的应用在连接到 Remote Config 后端之前按预期运行,并且如果没有在后端设置默认值,则默认值可用。

  1. 使用NSDictionary对象或plist 文件定义一组参数名称和默认参数值。

    如果您已经配置了 Remote Config 后端参数值,您可以下载包含所有默认值的生成的plist文件并将其保存到您的 Xcode 项目中。

    休息

    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
    

    Firebase 控制台

    1. Parameters选项卡中,打开 Menu ,然后选择Download default values

    2. 出现提示时,为 iOS 启用 .plist ,然后单击下载文件

  2. 使用setDefaults:将这些值添加到远程配置对象。以下示例从 plist 文件设置应用内默认值:

    迅速

    remoteConfig.setDefaults(fromPlist: "RemoteConfigDefaults")

    目标-C

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

第 3 步:获取要在您的应用中使用的参数值

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

第 4 步:设置参数值

使用 Firebase 控制台或远程配置后端 API ,您可以创建新的后端默认值,根据所需的条件逻辑或用户定位覆盖应用内值。本部分将引导您完成 Firebase 控制台步骤以创建这些值。

  1. Firebase 控制台中,打开您的项目。
  2. 从菜单中选择远程配置以查看远程配置仪表板。
  3. 使用与您在应用程序中定义的参数相同的名称定义参数。对于每个参数,您可以设置一个默认值(最终将覆盖应用内的默认值),您还可以设置条件值。要了解更多信息,请参阅远程配置参数和条件

第 5 步:获取并激活值

要从远程配置中获取参数值,请调用fetchWithCompletionHandler:fetchWithExpirationDuration:completionHandler:方法。您在后端设置的任何值都将被提取并缓存在远程配置对象中。

对于希望在一次调用中获取和激活值的情况,请使用fetchAndActivateWithCompletionHandler:

此示例从 Remote Config 后端获取值(不是缓存的值)并调用activateWithCompletionHandler:使它们对应用程序可用:

迅速

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

目标-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);
    }
}];

由于这些更新的参数值会影响应用的行为和外观,因此您应该在确保用户流畅体验的时间激活获取的值,例如用户下次打开您的应用时。有关更多信息和示例,请参阅远程配置加载策略

节流

如果应用程序在短时间内获取的次数过多,获取调用将受到限制并且 SDK 返回FIRRemoteConfigFetchStatusThrottled 。在 SDK 版本 6.3.0 之前,限制是在 60 分钟的窗口中有 5 个提取请求(较新的版本有更宽松的限制)。

在应用程序开发期间,您可能希望非常频繁地刷新缓存(每小时多次),以便在开发和测试应用程序时快速迭代。 To accommodate rapid iteration on a project with numerous developers, you can temporarily add a FIRRemoteConfigSettings property with a low minimum fetch interval ( MinimumFetchInterval ) in your app.

The default and recommended production fetch interval for Remote Config is 12 hours, which means that configs won't be fetched from the backend more than once in a 12 hour window, regardless of how many fetch calls are actually made. Specifically, the minimum fetch interval is determined in this following order:

  1. The parameter in fetch(long)
  2. The parameter in FIRRemoteConfigSettings.MinimumFetchInterval
  3. The default value of 12 hours

Next steps

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: