您可以使用 Firebase Remote Config 在您的应用程序中定义参数并在云端更新它们的值,从而允许您修改应用程序的外观和行为而无需分发应用程序更新。本指南将引导您完成入门步骤并提供一些示例代码,所有这些代码都可以从firebase/quickstart-js GitHub 存储库中克隆或下载。
第一步:添加并初始化Remote Config SDK
如果您还没有安装 Firebase JS SDK 并初始化 Firebase 。
添加 Remote Config JS SDK 并初始化 Remote Config:
Web version 9
import { initializeApp } from "firebase/app"; import { getRemoteConfig } from "firebase/remote-config"; // TODO: Replace the following with your app's Firebase project configuration // See: https://firebase.google.com/docs/web/learn-more#config-object const firebaseConfig = { // ... }; // Initialize Firebase const app = initializeApp(firebaseConfig); // Initialize Remote Config and get a reference to the service const remoteConfig = getRemoteConfig(app);
Web version 8
import firebase from "firebase/app"; import "firebase/remote-config"; // TODO: Replace the following with your app's Firebase project configuration // See: https://firebase.google.com/docs/web/learn-more#config-object const firebaseConfig = { // ... }; // Initialize Firebase firebase.initializeApp(firebaseConfig); // Initialize Remote Config and get a reference to the service const remoteConfig = firebase.remoteConfig();
此对象用于存储应用内默认参数值、从远程配置后端获取更新的参数值,以及控制何时将获取的值提供给您的应用。
第 2 步:设置最小提取间隔
在开发过程中,建议设置一个相对较低的最小获取间隔。有关详细信息,请参阅节流。
Web version 9
remoteConfig.settings.minimumFetchIntervalMillis = 3600000;
Web version 8
remoteConfig.settings.minimumFetchIntervalMillis = 3600000;
第 3 步:设置应用内默认参数值
您可以在 Remote Config 对象中设置应用内默认参数值,以便您的应用在连接到 Remote Config 后端之前按预期运行,并且如果没有在后端设置默认值,则默认值可用。
Web version 9
remoteConfig.defaultConfig = { "welcome_message": "Welcome" };
Web version 8
remoteConfig.defaultConfig = { "welcome_message": "Welcome" };
如果您已经配置了远程配置后端参数值,则可以下载包含所有默认值的生成的 JSON 文件并将其包含在您的应用程序包中:
休息
curl --compressed -D headers -H "Authorization: Bearer token" -X GET https://firebaseremoteconfig.googleapis.com/v1/projects/my-project-id/remoteConfig:downloadDefaults?format=JSON -o remote_config_defaults.json
Firebase 控制台
- 在Parameters选项卡中,打开 Menu ,然后选择Download default values 。
- 出现提示时,启用.json for web ,然后单击Download file 。
以下示例展示了您可以在应用中导入和设置默认值的两种不同方式。第一个示例使用fetch
,它将向您的应用程序包中包含的默认文件发出 HTTP 请求:
const rcDefaultsFile = await fetch('remote_config_defaults.json'); const rcDefaultsJson = await rcDefaultsFile.json(); remoteConfig.defaultConfig = rcDefaultsJson;
下一个示例使用require
,它在构建时将值编译到您的应用程序中:
let rcDefaults = require('./remote_config_defaults.json'); remoteConfig.defaultConfig = rcDefaults;
第 4 步:获取要在您的应用中使用的参数值
现在您可以从 Remote Config 对象中获取参数值。如果您稍后在后端设置值,获取它们,然后激活它们,这些值可用于您的应用程序。要获取这些值,请调用getValue()
方法,提供参数键作为参数。
Web version 9
import { getValue } from "firebase/remote-config"; const val = getValue(remoteConfig, "welcome_messsage");
Web version 8
const val = remoteConfig.getValue("welcome_messsage");
第 5 步:设置参数值
使用 Firebase 控制台或远程配置后端 API ,您可以创建新的服务器端默认值,根据您所需的条件逻辑或用户定位覆盖应用内值。本部分将引导您完成 Firebase 控制台步骤以创建这些值。
- 在Firebase 控制台中,打开您的项目。
- 从菜单中选择远程配置以查看远程配置仪表板。
- 使用与您在应用程序中定义的参数相同的名称定义参数。对于每个参数,您可以设置一个默认值(最终将覆盖应用内的默认值),您还可以设置条件值。要了解更多信息,请参阅远程配置参数和条件。
第 6 步:获取并激活值
- 要从远程配置后端获取参数值,请调用
fetchConfig()
方法。您在后端设置的任何值都将被提取并缓存在远程配置对象中。 - 要使获取的参数值对您的应用程序可用,请调用
activate()
方法。
对于希望在一次调用中获取和激活值的情况,请使用fetchAndActivate()
,如本例所示:
Web version 9
import { fetchAndActivate } from "firebase/remote-config"; fetchAndActivate(remoteConfig) .then(() => { // ... }) .catch((err) => { // ... });
Web version 8
remoteConfig.fetchAndActivate() .then(() => { // ... }) .catch((err) => { // ... });
由于这些更新的参数值会影响应用的行为和外观,因此您应该在确保用户流畅体验的时间激活获取的值,例如用户下次打开您的应用时。有关更多信息和示例,请参阅远程配置加载策略。
节流
如果应用程序在短时间内获取的次数太多,获取调用可能会受到限制。在这种情况下,SDK 会抛出FETCH_THROTTLE
错误。建议您捕获此错误并以指数退避模式重试,在后续提取请求之间等待更长的间隔。
在应用程序开发期间,您可能希望非常频繁地刷新缓存(每小时多次),以便在开发和测试应用程序时快速迭代。为了适应拥有众多开发人员的项目的快速迭代,您可以在您的应用中临时添加一个具有较低最小获取间隔 ( Settings.minimumFetchIntervalMillis
) 的属性。
远程配置的默认和推荐生产获取间隔为 12 小时,这意味着在 12 小时的窗口中不会从后端多次获取配置,无论实际进行了多少次获取调用。具体来说,最小抓取间隔按以下顺序确定:
-
Settings.minimumFetchIntervalMillis
中的参数。 - 默认值为 12 小时。
下一步
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: