远程配置模板和版本控制

远程配置模板位于服务器端,是您为 Firebase 项目创建的一组 JSON 格式的参数和条件。在 Firebase 控制台的参数条件标签页中,您可以看到以图表形式显示的模板内容,并对该模板进行修改和管理。如果您使用 REST API 修改和管理配置,则可直接处理模板文件,如下面的示例 remote-config.json 所示:

{
  "parameters":[
    {
      "key":"welcome_message",
      "value_options":[
        {
          "value":"Welcome to this sample app"
        }
      ]
    },
    {
      "key":"welcome_message_caps",
      "value_options":[
        {
          "value":"false"
        }
      ]
    }
  ],
  "version":{
    "version_number": "42",
    "update_time":"2018-05-11T18:46:40Z",
    "update_user":{
      "name":"Jane Developer",
      "email":"jane@developer.org",
      "imageUrl":"http://image.google.com/path-to-profile-photo-for-jane"
    },
    "description":"Adding welcome messages",
    "origin":"CONSOLE",
    "update_type":"INCREMENTAL_UPDATE"
  }
}

每当您更新参数时,远程配置都会创建一个新版的远程配置模板,并将旧模板存储为旧版本,供您在需要时检索或回滚到此版本。第一个版本号是远程配置存储的初始值,后面依序递增。如上图所示,所有模板中都有一个 version 字段,里面是相应版本的元数据。

您可以通过 Firebase 控制台或 REST API 执行以下版本管理任务:

  • 列出存储的所有模板版本
  • 检索具体版本
  • 回滚到特定版本

在管理远程配置模板时,请注意以下过期限制:自创建之日起 90 天内有效;或存储的版本总数不得超过 300。如果您要存储或回滚超出上述限制的模板,请执行手动保存和存储。应用正在使用的当前活跃远程配置模板不会过期;但是如果该模板自创建之日起活跃天数已超过 90 天,并且有新版模板取代了它,则该模板会因过期而无法再被检索到。

利用 Firebase 控制台管理远程配置模板的版本

Firebase 控制台提供了一个图形界面,您可以在此列出模板版本、查看模板详情和根据需要进行回滚。要执行上述任务,请按以下步骤操作:

  1. 参数标签页中,选择右上角显示的时钟图标。这会打开更改历史记录页面,其右侧的列表菜单中列出了所有存储的模板版本。

  2. 默认情况下,“详细信息”窗格会显示当前的活跃模板。如需查看列表中其他版本的详细信息,请从右侧菜单中将其选中。

    每个存储版本显示的详细信息都包含更改来源的相关信息(源自控制台、REST API、回滚,还是来自强制保存模板的增量更改)。

  3. 您可以将鼠标悬停在任一未选版本的上下文菜单上并选择与选定版本进行比较,来查看当前所选版本与任何其他已存储版本之间的详细差异。

  4. 对于支持回滚的先前模板版本,页面右上角会显示一个用于回滚到该版本的选项按钮。仅当您确认要回滚到该版本并立即为所有应用和用户使用这些值时,才能点击确认。

利用 REST API 管理远程配置模板的版本

本部分介绍了如何使用 REST API 管理远程配置模板的版本。要详细了解如何通过编程方式创建、修改和保存模板,请参阅使用 Remote Config REST API

列出所有已存储的远程配置模板版本

通过自定义 HTTP 方法 :listVersions,您可以检索远程配置模板的所有存储版本。例如:

curl --compressed -D headers -H "Authorization: Bearer token" -X GET https://firebaseremoteconfig.googleapis.com/v1/projects/my-project-id:listVersions

结果会包含所有已存储版本的元数据,包括更新时间、进行更新的用户,以及更新是通过控制台还是 REST API 进行。下面是一个版本元素的示例:

{
  "versions": [{
    "version_number": "6",
    "update_time": "2018-05-12T02:38:54Z",
    "update_user": {
      "email": "jane@developer.org",
    },
    "description": "One small change on the console",
    "origin": "CONSOLE",
    "update_type": "INCREMENTAL_UPDATE"
  }]

检索远程配置模板的特定版本

通过附加网址参数 ?version_number,您可以检索已存储的任何远程配置模板版本。例如:

curl --compressed -D headers -H "Authorization: Bearer token" -X GET https://firebaseremoteconfig.googleapis.com/v1/projects/my-project-id/remoteConfig?version_number=6

该参数仅对 GET 操作有效;您无法用它为更新指定版本号。类似的 get 请求(但不包含 ?version_number 参数)会检索当前有效的模板,具体请参阅从远程配置后端获取 JSON

回滚到远程配置模板的特定已存储版本

要回滚到已存储的远程配置模板,请使用自定义方法 :rollback 发出一个 HTTP POST 请求,并在请求正文中指明要应用的具体版本。例如:

curl --compressed -D headers -H "Authorization: Bearer token" -X POST https://firebaseremoteconfig.googleapis.com/v1/projects/my-project-id/remoteConfig:rollback -d '{"version_number": 6}'

结果会包含当前活跃的已存储模板的内容,及其新版本的元数据。

请注意,此回滚操作实际上会创建一个使用新版本号的版本。例如,从版本 10 回滚到版本 6 实际上会创建版本 6 的新副本,它与原版本(即版本 6)的唯一区别就是其版本号为 11。原来的版本 6 如果尚未到期,仍会存储在系统中。版本 11 会成为活跃版本。