Firebase Remote Config 使用入门


您可以使用 Firebase Remote Config 来定义应用中的参数并在云端更新它们的值。这样,您无需更新应用即可修改应用的外观和行为。本指南介绍了入门步骤并提供了一些示例代码。

第 1 步:将 Firebase 和 Remote Config SDK 添加到您的应用

  1. 安装并初始化 Firebase SDKs for Flutter(如果您尚未执行此操作)。

  2. 使用 Remote Config 时,如需根据用户属性和目标设备来有条件地定位应用实例,则需要用到 Google Analytics(分析)。请务必在项目中启用 Google Analytics(分析)

  3. 从 Flutter 项目的根目录运行以下命令,安装 Remote Config 插件:

    flutter pub add firebase_remote_config
    

    此外,在设置 Remote Config 时,您还需要将 Firebase SDK for Google Analytics 添加到应用中:

    flutter pub add firebase_analytics
    
  4. 重新构建您的项目:

    flutter run
    
  5. 如果您在 macOS 上使用 Remote Config,请在 Xcode 中启用密钥链共享

第 2 步:获取 Remote Config 单例对象

获取 Remote Config 对象实例,并设置最小提取间隔以实现频繁刷新:

final remoteConfig = FirebaseRemoteConfig.instance;
await remoteConfig.setConfigSettings(RemoteConfigSettings(
    fetchTimeout: const Duration(minutes: 1),
    minimumFetchInterval: const Duration(hours: 1),
));

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

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

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

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

await remoteConfig.setDefaults(const {
    "example_param_1": 42,
    "example_param_2": 3.14159,
    "example_param_3": true,
    "example_param_4": "Hello, world!",
});

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

现在,您可以从 Remote Config 对象中获取参数值。如果您在后端中设置值,然后提取并激活它们,这些值便可供您的应用使用。否则,您将获得使用 setDefaults() 方法配置的应用内参数值。

如需获取这些值,请调用下列与应用所需数据类型对应的方法,并传入参数键作为调用的实参:

  • getBool()
  • getDouble()
  • getInt()
  • getString()

第 5 步:在 Remote Config 后端中设置参数值

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

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

第 6 步:提取并激活值

  1. 如需从 Remote Config 后端提取参数值,请调用 fetch() 方法。系统将提取您在后端中设置的所有值,并将其存储在 Remote Config 对象中。

  2. 如需将提取的参数值提供给您的应用,请调用 activate() 方法。

    如果您想在一次调用中提取并激活值,请使用 fetchAndActivate() 请求从 Remote Config 后端提取值,并使其可供应用使用:

    await remoteConfig.fetchAndActivate();
    

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

第 7 步:实时监听更新

提取参数值后,您可以使用实时 Remote Config 监听 Remote Config 后端中的更新。有更新可用时,实时 Remote Config 会向关联设备发送信号,并会在有新的 Remote Config 版本发布后自动提取更改内容。

请注意,实时 Remote Config 不适用于 Web。

  1. 在您的应用中,使用 onConfigUpdated 开始监听更新并自动提取任何新参数值。

     remoteConfig.onConfigUpdated.listen((event) async {
       await remoteConfig.activate();
    
       // Use the new config values here.
     });
    
  2. 当您下次发布 Remote Config 的新版本时,运行您的应用并监听更改的设备将激活新配置。

限制

如果应用在短时间内提取次数太多,提取调用会受到限制,并且 FirebaseRemoteConfiglastFetchStatus 属性的值将为 RemoteConfigFetchStatus.throttle

Remote Config 的默认最小提取间隔为 12 小时,这意味着无论实际上调用了多少次提取方法,在 12 小时的时间段内最多只会从后端提取一次配置。

在应用开发期间,如果您未使用实时 Remote Config(我们建议采用),那么您可能需要非常频繁地(每小时很多次)提取和激活配置,从而可以在开发和测试应用时快速迭代。为了让不超过 10 名开发者对项目进行快速迭代,您可以使用 setConfigSettings() 暂时设置一个较短的最小提取间隔。

final remoteConfig = FirebaseRemoteConfig.instance;
await remoteConfig.setConfigSettings(RemoteConfigSettings(
    fetchTimeout: const Duration(minutes: 1),
    minimumFetchInterval: const Duration(minutes: 5),
));

后续步骤

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