您可以使用 Firebase Remote Config 在您的应用程序中定义参数并在云端更新它们的值,从而允许您修改应用程序的外观和行为而无需分发应用程序更新。本指南将引导您完成入门步骤并提供一些示例代码。
第 1 步:将 Firebase 和 Remote Config SDK 添加到您的应用
如果您还没有安装并初始化 Firebase SDKs for Flutter ,请执行此操作。
对于 Remote Config,需要 Google Analytics 才能将应用程序实例有条件地定位到用户属性和受众。确保在项目中启用 Google Analytics 。
在 Flutter 项目的根目录中,运行以下命令来安装 Remote Config 插件:
flutter pub add firebase_remote_config
此外,作为设置远程配置的一部分,您需要将适用于 Google Analytics 的 Firebase SDK 添加到您的应用中:
flutter pub add firebase_analytics
重建你的项目:
flutter run
第 2 步:获取 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 控制台或远程配置后端 API ,您可以创建新的服务器端默认值,根据您所需的条件逻辑或用户定位覆盖应用内值。本节介绍创建这些值的 Firebase 控制台步骤。
- 在Firebase 控制台中,打开您的项目。
- 从菜单中选择远程配置以查看远程配置仪表板。
- 使用与您在应用程序中定义的参数相同的名称定义参数。对于每个参数,您可以设置一个默认值(最终会覆盖相应的应用内默认值),您还可以设置条件值。要了解更多信息,请参阅远程配置参数和条件。
第 6 步:获取并激活值
要从远程配置后端获取参数值,请调用
fetch()
方法。您在后端设置的任何值都将被提取并存储在远程配置对象中。要使获取的参数值对您的应用程序可用,请调用
activate()
方法。对于您希望在一次调用中获取和激活值的情况,您可以使用
fetchAndActivate()
请求从远程配置后端获取值并将它们提供给应用程序:await remoteConfig.fetchAndActivate();
由于这些更新的参数值会影响应用的行为和外观,因此您应该在确保用户流畅体验的时间激活获取的值,例如用户下次打开您的应用时。有关更多信息和示例,请参阅远程配置加载策略。
节流
如果一个应用程序在短时间内获取太多次,获取调用将被限制并且FirebaseRemoteConfig
的lastFetchStatus
属性的值将为RemoteConfigFetchStatus.throttle
。
Remote Config 的默认最小提取间隔为 12 小时,这意味着在 12 小时的窗口中不会从后端提取配置超过一次,无论实际进行了多少次提取调用。
在应用程序开发期间,您可能希望非常频繁地(每小时多次)获取和激活配置,以便在开发和测试应用程序时快速迭代。为了适应最多 10 名开发人员的项目的快速迭代,您可以使用setConfigSettings()
临时设置较低的最小提取间隔。
final remoteConfig = FirebaseRemoteConfig.instance;
await remoteConfig.setConfigSettings(RemoteConfigSettings(
fetchTimeout: const Duration(minutes: 1),
minimumFetchInterval: const Duration(minutes: 5),
));
下一步
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: