Remote Config 範本是一組 JSON 格式 您建立的參數和條件。個人中心 您可以建立用戶端範本,供應用程式從中擷取值,並且 server 範本,可供伺服器用戶端擷取值。
本節會探討用戶端範本。瞭解伺服器專屬 範本,點選 伺服器範本:使用 Firebase 控制台修改和管理範本,畫面會顯示 指定範本中以圖形格式呈現的內容 參數和 「條件」分頁。
您也可以使用 Remote Config REST API 和 Admin SDK 或 Firebase 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"
}
}
您可以使用 Firebase 控制台執行以下版本管理工作:
- 列出所有儲存的範本版本
- 擷取特定版本
- 復原至特定用戶端版本
- 從「變更」中刪除 Remote Config 個範本。 歷史記錄 第 頁
您也可以使用範本列出範本、擷取範本及復原範本 Firebase CLI 和 Remote Config 後端 API。
每個範本類型最多可以有 300 個生命週期儲存版本 (300 個用戶端範本和 300 個伺服器範本),其中包含 已刪除範本的版本號碼。超過 300 次 專案生命週期內每個範本類型的範本版本 系統會刪除最早的版本,但最多能保有 300 個版本 就可以選擇那些類型的物件
每次更新參數時,Remote Config 都會建立
新版本的 Remote Config 範本,並將先前的範本儲存為
以便視需要擷取或復原為版本版本號碼
的初始值是從 Remote Config 儲存的初始值依序遞增。
所有範本皆包含 version
欄位 (如圖所示),其中包含該欄位的相關中繼資料
特定版本的 Pod
您可以視需要從以下位置刪除 Remote Config 個範本: 變更記錄 CANNOT TRANSLATE Remote Config 控制台。
管理 Remote Config 個範本版本
本節說明如何管理 Remote Config 的版本 範本。
如要進一步瞭解建立方式 透過程式輔助方式修改並儲存範本,請參閱 透過程式輔助方式修改 Remote Config。
列出「Remote Config」範本的所有已儲存版本
您可以使用 所有已儲存的版本 Remote Config 範本。現在說明一下操作方式:
Firebase 個控制台
在「Parameters」分頁中 選取「時鐘」右上方的圖示。系統隨即會開啟 變更記錄 頁面右側會列出所有儲存的範本版本。
為每個儲存的版本顯示的詳細資料,包括 透過 REST API 執行復原程序中的變更 還是因為強制儲存範本而進行增量變更
Firebase 個 CLI
firebase remoteconfig:versions:list
使用 --limit
選項可限制傳回的版本數量。
傳遞「0」以便擷取所有版本。
Node.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);
});
}
Java
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()); }
REST
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
範本清單會列出所有已儲存版本的中繼資料,包括 更新時間和製作方式。以下是 版本元素範例:
```json
{
"versions": [{
"version_number": "6",
"update_time": "2022-05-12T02:38:54Z",
"update_user": {
"name": "Jane Smith",
"email": "jane@developer.org",
"imageUrl": "https://lh3.googleusercontent.com/a-/..."
},
"description": "One small change on the console",
"origin": "CONSOLE",
"update_type": "INCREMENTAL_UPDATE"
}]
}
```
擷取 Remote Config 範本的特定版本
您可以擷取 Remote Config 範本版本。擷取儲存的範本 版本:
Firebase 個控制台
根據預設, 「變更記錄」分頁 就會顯示目前使用中的範本。查看 版本詳細資料,請在右側選單中選取該版本。
您可以查看目前所選版本和其他任何版本的詳細差異 方法是將滑鼠遊標懸停在任何未選取版本的內容選單上 並選取「與所選版本比較」。
Firebase 個 CLI
firebase remoteconfig:get -v VERSION_NUMBER
或者,您可以使用 -o, FILENAME
將輸出內容寫入指定檔案。
Node.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);
});
Java
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());
REST
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
網址參數 ?version_number
只適用於 GET
作業。
您無法使用這個函式來指定更新的版本號碼。類似取得
沒有 ?version_number
的要求
參數就會擷取目前使用中的範本。
復原至 Remote Config 範本的特定儲存版本
您隨時可以復原至任何已儲存的 範本版本如何復原範本:
Firebase 個控制台
如果是可復原的舊版範本, 選項按鈕,用於復原至該版本的 變更記錄 頁面。除非確定要復原至該版本,否則請勿按下及確認這項操作 並為所有應用程式和使用者立即使用這些值。
Firebase 個 CLI
firebase remoteconfig:rollback -v VERSION_NUMBER
Node.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);
})
Java
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()); } }
REST
如要復原為儲存的 Remote Config 範本,請發出 HTTP POST,內含:
自訂方法 :rollback
,並在要求主體中
。例如:
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}'
回應會包含目前使用中儲存範本的內容, 或是新版本中繼資料
請注意,這項復原作業實際上 而是使用新的編號版本例如,從第 10 版復原到第 6 版 建立新的版本 6 版本編號為 11原始版本 6 (假設尚未到期,以及版本 11) 會變成使用中的範本
刪除 Remote Config 範本
您可以透過 Firebase 控制台刪除 Remote Config 個範本。目的地: 刪除 Remote Config 範本:
1.來自「Remote Config」 參數 頁面,按一下 變更記錄:切換到要刪除的範本,然後按一下
請選取 [更多],然後選取 刪除。系統提示您確認刪除時,按一下「Delete」(刪除)。
下載並發布Remote Config範本
下載並發布 Remote Config 範本,即可整合至 原始碼控制及建構系統、自動設定更新,以及保留參數 來同步多個專案的
您可以下載目前使用中的「Remote Config」範本 以程式輔助的方式 之後,您就能更新 匯出 JSON 檔案並發布至相同專案,或發布至新的專案, 現有專案
假設您有多個專案 分別代表了不同的應用程式階段 軟體開發的生命週期,例如開發、測試、測試和正式環境 環境在這個例子中,您可以把經過完整測試的範本 從 測試環境並發布至正式版專案。
您也可以使用這個方法將設定從一項專案遷移至 也可以用來自 專案。
專為以下項目建立的參數和參數值: 匯出的範本不含 A/B Testing 項實驗。
如何匯出及匯入 Remote Config 個範本:
下載目前的遠端設定範本
使用下列指令下載 Remote Config 中的有效範本: JSON 格式:
Firebase 個控制台
- 從 Remote Config 參數或條件 開啟「 選單」分頁,然後 選取「Download current config file」。
- 系統顯示提示時,請點選「下載設定檔」,選擇儲存位置 然後按一下「儲存」即可儲存檔案。
Firebase 個 CLI
firebase remoteconfig:get -o filename
Node.js
function getTemplate() { var config = admin.remoteConfig(); config.getTemplate() .then(function (template) { console.log('ETag from server: ' + template.etag); var templateStr = JSON.stringify(template); fs.writeFileSync('config.json', templateStr); }) .catch(function (err) { console.error('Unable to get template'); console.error(err); }); }
Java
Template template = FirebaseRemoteConfig.getInstance().getTemplateAsync().get(); // See the ETag of the fetched template. System.out.println("ETag from server: " + template.getETag());
REST
curl --compressed -D headers -H "Authorization: Bearer token" -X GET https://firebaseremoteconfig.googleapis.com/v1/projects/my-project-id/remoteConfig -o filename
這個指令會將 JSON 酬載輸出至一個檔案,
(包括 ETag) 至獨立的 headers
檔案。
驗證遠端設定範本
您可以利用 Firebase Admin SDK 或 REST API範本也會在 ,透過 Firebase CLI 或 Firebase 控制台發布。範本驗證程序會檢查是否有錯誤,例如
參數和條件、無效條件名稱或不存在的條件,或
ETag 格式錯誤。例如,如果要求包含
金鑰數量上限 (2000 個) 會傳回錯誤訊息 Param count too
large
。
Node.js
function validateTemplate(template) { admin.remoteConfig().validateTemplate(template) .then(function (validatedTemplate) { // The template is valid and safe to use. console.log('Template was valid and safe to use'); }) .catch(function (err) { console.error('Template is invalid and cannot be published'); console.error(err); }); }
Java
try { Template validatedTemplate = FirebaseRemoteConfig.getInstance() .validateTemplateAsync(template).get(); System.out.println("Template was valid and safe to use"); } catch (ExecutionException e) { if (e.getCause() instanceof FirebaseRemoteConfigException) { FirebaseRemoteConfigException rcError = (FirebaseRemoteConfigException) e.getCause(); System.out.println("Template is invalid and cannot be published"); System.out.println(rcError.getMessage()); } }
REST
附加網址參數 ?validate_only=true
來驗證範本更新
加入以下程式碼:
curl --compressed -H "Content-Type: application/json; UTF8" -H "If-Match: last-returned-etag" -H "Authorization: Bearer token" -X PUT https://firebaseremoteconfig.googleapis.com/v1/projects/my-project-id/remoteConfig?validate_only=true -d @filename
如果您的範本已順利通過驗證,curl 指令會傳回
提交的 JSON 範本,你會在儲存的 headers
檔案中找到
HTTP/2 狀態 200,並已更新 ETag (後置字串為 -0
)。如果您的
範本未經驗證,您會在
JSON 回應和您的 headers
檔案將包含非 200 回應
(且沒有 ETag)。
發布「Remote Config」範本
下載範本後,對 JSON 內容進行必要變更 您就可以將其發布到專案
發布範本後,系統會將整個現有設定範本替換成 更新 檔案,並將範本版本 1 遞增。由於整個 設定替換,如果您從 JSON 檔案刪除參數 該參數就會從伺服器中刪除,並且不再提供 。
發布後,參數和值的異動立即可用 為應用程式和使用者提供服務如有需要,您可以 復原為先前版本
使用下列指令發布範本:
Firebase 個控制台
- 從 Remote Config 參數或條件 開啟「選單」 分頁, 然後選取「從檔案發布」。
- 系統提示時,按一下「Browse」(瀏覽),瀏覽至並選取 Remote Config 檔案並按一下「選取」。
- 檔案會通過驗證,如果成功,你可以按一下 發布:將設定立即提供給 應用程式和使用者
Node.js
function publishTemplate() { var config = admin.remoteConfig(); var template = config.createTemplateFromJSON( fs.readFileSync('config.json', 'UTF8')); config.publishTemplate(template) .then(function (updatedTemplate) { console.log('Template has been published'); console.log('ETag from server: ' + updatedTemplate.etag); }) .catch(function (err) { console.error('Unable to publish template.'); console.error(err); }); }
Java
try { Template publishedTemplate = FirebaseRemoteConfig.getInstance() .publishTemplateAsync(template).get(); System.out.println("Template has been published"); // See the ETag of the published template. System.out.println("ETag from server: " + publishedTemplate.getETag()); } catch (ExecutionException e) { if (e.getCause() instanceof FirebaseRemoteConfigException) { FirebaseRemoteConfigException rcError = (FirebaseRemoteConfigException) e.getCause(); System.out.println("Unable to publish template."); System.out.println(rcError.getMessage()); } }
REST
curl --compressed -H "Content-Type: application/json; UTF8" -H "If-Match: last-returned-etag" -H "Authorization: Bearer token" -X PUT https://firebaseremoteconfig.googleapis.com/v1/projects/my-project-id/remoteConfig -d @filename
針對這個 curl
指令,您可以使用「@」來指定內容
字元,後面加上檔案名稱。
已納入 Remote Config 項個人化設定和條件 下載範本,因此請務必留意下列事項 發布至其他專案的限制:
無法將個人化作業從專案匯入專案。
舉例來說,如果專案啟用了個人化功能, 下載並編輯範本 就能將範本發布在 但無法發布至其他專案 套用範本的個人化設定
條件可從專案匯入至專案,但請注意 特定條件值 (例如應用程式 ID 或目標對象) 應存在於 在發布前就先選取目標專案
舉例來說,如果您有一個使用條件的 Remote Config 參數 指定平台值
iOS
時,範本可發布至 其他專案的平台值都一樣。 但是,如果條件需要使用特定應用程式 ID 或使用者, 如果目標對像不存在於目標專案中,驗證就會失敗。如果您要發布的範本包含 必須在目標中啟用「Google Analytics」和「Analytics」 專案。
下載Remote Config範本預設值
因為應用程式不一定每次都能連上網際網路 您必須為所有 Remote Config 設定用戶端應用程式預設值 參數。建議您也定期同步處理應用程式用戶端預設值 值和 Remote Config 後端預設參數值 可能會隨時間改變。
如本節結尾各平台的專屬連結所述, 或是在應用程式中手動設定這些預設值 下載「只」包含所有參數鍵/值組合的檔案 和這些值在使用中 Remote Config 範本中的預設值。接著 將這個檔案納入專案,並設定應用程式來匯入這些值。
您可以在 Android 應用程式、Android 應用程式 iOS 應用程式的屬性清單 (plist) 格式,以及適用於網頁應用程式的 JSON 格式。
建議您先定期下載 Remote Config 預設值,再下載新版本 發布應用程式,確保應用程式和 Remote Config 後端留在 同步處理。
如何下載內含範本預設值的檔案:
REST
curl --compressed -D headers -H "Authorization: Bearer token -X GET https://firebaseremoteconfig.googleapis.com/v1/projects/my-project-id/remoteConfig:downloadDefaults?format=file_format'
依據檔案,使用 XML
、PLIST
或 JSON
做為 format
值
格式的檔案。
Firebase 個控制台
如要進一步瞭解如何將 Remote Config 預設值匯入您的 應用程式,請參閱: