Join us for Firebase Summit on November 10, 2021. Tune in to learn how Firebase can help you accelerate app development, release with confidence, and scale with ease. Register

遠程配置模板和版本控制

遠程配置模板是您為 Firebase 項目創建的一組服務器端 JSON 格式的參數和條件。您可以修改和使用火力地堡控制台,管理模板,顯示在以圖形格式模板的內容參數條件的標籤。您還可以使用遠程配置後端的API火力地堡CLI修改和管理您的配置。

這是模板文件的示例:

  {
    "conditions": [
      {
        "name": "ios",
        "expression": "device.os == 'ios'"
      }
    ],
    "parameters": {
      "welcome_message": {
        "defaultValue": {
          "value": "Welcome to this sample app"
        },
        "conditionalValues": {
          "ios": {
            "value": "Welcome to this sample iOS app"
          }
        }
      },
      "welcome_message_caps": {
        "defaultValue": {
          "value": "false"
        }
      },
      "header_text": {
        "defaultValue": {
          "useInAppDefault": true
        }
      }
    },
    "version": {
      "versionNumber": "28",
      "updateTime": "2020-05-14T18:39:38.994Z",
      "updateUser": {
        "email": "user@google.com"
      },
      "updateOrigin": "CONSOLE",
      "updateType": "INCREMENTAL_UPDATE"
    }
  }

每次更新參數時,遠程配置都會創建一個新的版本化遠程配置模板,並將之前的模板存儲為您可以根據需要檢索或回滾到的版本。版本號從遠程配置存儲的初始值開始按順序遞增。所有模板包括version場如圖所示,包含有關特定版本的元數據。

使用 Firebase 控制台、Firebase CLI 或遠程配置後端 API,您可以執行以下版本管理任務:

  • 列出所有存儲的模板版本
  • 檢索特定版本
  • 回滾到特定版本

在管理遠程配置模板時,請記住到期閾值:從創建時間算起 90 天,或總共 300 個存儲版本的限制。如果您想存儲或回滾到超出這些限制的模板,請手動保存和存儲它。當前使用的主動遠程配置模板,通過您的應用程序不會過期;但是,如果它自創建以來一直處於活動狀態超過 90 天並被更新替換,則無法再次檢索(由於過期)。

管理遠程配置模板版本

本節介紹如何管理遠程配置模板的版本。有關如何創建,修改和保存編程模板的更多細節,請參見修改遠程配置程序

列出遠程配置模板的所有存儲版本

您可以檢索遠程配置模板的所有存儲版本的列表。例如:

節點.js

function listAllVersions() {
  admin.remoteConfig().listVersions()
    .then((listVersionsResult) => {
      console.log("Successfully fetched the list of versions");
      listVersionsResult.versions.forEach((version) => {
        console.log('version', JSON.stringify(version));
      });
    })
    .catch((error) => {
      console.log(error);
    });
}

爪哇

ListVersionsPage page = FirebaseRemoteConfig.getInstance().listVersionsAsync().get();
while (page != null) {
  for (Version version : page.getValues()) {
    System.out.println("Version: " + version.getVersionNumber());
  }
  page = page.getNextPage();
}

// Iterate through all versions. This will still retrieve versions in batches.
page = FirebaseRemoteConfig.getInstance().listVersionsAsync().get();
for (Version version : page.iterateAll()) {
  System.out.println("Version: " + version.getVersionNumber());
}

休息

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

Firebase 控制台

參數選項卡,選擇“時鐘”圖標顯示在右上角。這將打開更改歷史記錄列表在右側的列表菜單中的所有存儲的模板版本頁面。

為每個存儲的版本顯示的詳細信息包括有關更改是源自控制台、REST API、回滾還是來自模板強制保存的增量更改的信息。

Firebase 命令行界面

firebase remoteconfig:versions:list

使用--limit選項來限制返回版本數量。傳遞“0”以獲取所有版本。

模板列表包括所有存儲版本的元數據,包括更新時間、製作者以及是通過控制台還是 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"
  }]

檢索特定版本的遠程配置模板

您可以檢索遠程配置模板的任何特定存儲版本。例如:

節點.js

通行證getTemplate()不帶任何參數,以獲取最新版本的模板,或檢索特定的版本,使用getTemplateAtVersion()

// Get template version: 6
admin.remoteConfig().getTemplateAtVersion('6')
  .then((template) => {
    console.log("Successfully fetched the template with ETag: " + template.etag);
  })
  .catch((error) => {
    console.log(error);
  });

爪哇

Template template = FirebaseRemoteConfig.getInstance().getTemplateAtVersionAsync(versionNumber).get();
// See the ETag of the fetched template.
System.out.println("Successfully fetched the template with ETag: " + template.getETag());

休息

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

URL參數?version_number只適用於GET操作;您不能使用它來指定更新的版本號。沒有類似的GET請求?version_number參數將檢索當前的活動模板。

Firebase 控制台

默認情況下,在細節窗格更改歷史記錄選項卡顯示當前的活動模板。要查看列表中另一個版本的詳細信息,請從右側菜單中選擇它。

您可以將鼠標懸停在任何非所選版本的上下文菜單,並與選定的版本選擇比較查看當前所選版本和任何其他存儲的版本的詳細差異

Firebase 命令行界面

firebase remoteconfig:get -v VERSION_NUMBER

或者,你可以寫輸出到指定的文件與-o, FILENAME

回滾到遠程配置模板的特定存儲版本

您可以回滾到模板的任何存儲版本。例如:

節點.js

// Roll back to template version: 6
admin.remoteConfig().rollback('6')
  .then((template) => {
    console.log("Successfully rolled back to template version 6.");
    console.log("New ETag: " + template.etag);
  })
  .catch((error) => {
    console.log('Error trying to rollback:', e);
  })

爪哇

try {
  Template template = FirebaseRemoteConfig.getInstance().rollbackAsync(versionNumber).get();
  System.out.println("Successfully rolled back to template version: " + versionNumber);
  System.out.println("New ETag: " + template.getETag());
} catch (ExecutionException e) {
  if (e.getCause() instanceof FirebaseRemoteConfigException) {
    FirebaseRemoteConfigException rcError = (FirebaseRemoteConfigException) e.getCause();
    System.out.println("Error trying to rollback template.");
    System.out.println(rcError.getMessage());
  }
}

休息

回滾到存儲的遠程配置模板,發出一個HTTP POST與自定義方法:rollback ,並在請求主體,具體的版本適用。例如:

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

響應包含現在活動的存儲模板的內容及其新版本元數據。

Firebase 控制台

對於以前符合回滾模板版本,選項按鈕回滾到該版本在右上角會顯示更改歷史記錄頁面。點擊並確認這只是如果你確定要回滾到該版本並立即使用這些值所有的應用程序和用戶。

Firebase 命令行界面

firebase remoteconfig:rollback -v VERSION_NUMBER

請注意,此回滾操作有效地創建了一個新的編號版本。例如,從版本 10 回滾到版本 6 有效地創建了版本 6 的新副本,與原始版本的區別僅在於其版本號為 11。原始版本 6 仍被存儲,假設它尚未到期,並且版本 11 成為活動模板。