Check out what’s new from Firebase at Google I/O 2022. Learn more

遠程配置模板和版本控制

遠程配置模板是您為 Firebase 項目創建的一組服務器端 JSON 格式的參數和條件。您可以使用 Firebase 控制台修改和管理模板,該控制台在“參數”和“條件”選項卡中以圖形格式顯示模板的內容。您還可以使用遠程配置後端 APIFirebase 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"
    }
  }

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

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

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

在管理遠程配置模板時,請牢記過期閾值:您的應用使用的當前活動遠程配置模板不會過期;但是,如果它被更新替換,之前的版本將僅存儲 90 天,之後它將過期並且無法檢索。存儲版本的總數也限制為 300 個。如果您想存儲或回滾到超出這些限制的模板,請手動保存並存儲它。

管理遠程配置模板版本

本節介紹如何管理遠程配置模板的版本。有關如何以編程方式創建、修改和保存模板的更多詳細信息,請參閱以編程方式修改遠程配置

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

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

節點.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>/remoteConfig: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

URL 參數?version_number僅對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());
  }
}

休息

要回滾到存儲的遠程配置模板,請使用自定義方法:rollback發出 HTTP POST,並在請求正文中使用要應用的特定版本。例如:

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

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

Firebase 控制台

對於符合回滾條件的先前模板版本,“更改歷史記錄”頁面的右上角會顯示一個用於回滾到該版本的選項按鈕。僅當您確定要回滾到該版本並立即為所有應用程序和用戶使用這些值時,才單擊並確認。

Firebase 命令行界面

firebase remoteconfig:rollback -v VERSION_NUMBER

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

下載遠程配置模板默認值

由於您的應用程序可能並不總是連接到 Internet,因此您應該為所有遠程配置參數配置客戶端應用程序默認值。您還應該定期同步您的應用客戶端默認值和遠程配置後端默認參數值,因為它們可能會隨著時間而改變。

如本節末尾特定於平台的鏈接中所述,您可以在應用程序中手動設置這些默認值,也可以通過下載包含所有參數的鍵值對及其默認值的文件來簡化此過程活動的遠程配置模板。然後,您可以將此文件包含在您的項目中並配置您的應用程序以導入這些值。

您可以為 Android 應用程序下載 XML 格式、iOS 應用程序的屬性列表 (plist) 格式和 Web 應用程序的 JSON 格式的這些文件。

我們建議在發布任何新應用程序之前定期下載遠程配置默認值,以確保您的應用程序和遠程配置後端保持同步。

要下載包含模板默認值的文件:

休息

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

使用XMLPLISTJSON作為format值,具體取決於您要下載的文件格式。

Firebase 控制台

  1. 參數選項卡中,打開菜單,然後選擇下載默認值
  2. 出現提示時,單擊與您要下載的文件格式對應的單選按鈕,然後單擊下載文件

有關將遠程配置默認值導入您的應用程序的更多信息,請參閱: