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

遠程配置參數和條件

使用 Firebase 控制台或Remote Config 後端 API時,您可以定義一個或多個參數(鍵值對)並為這些參數提供應用內默認值。您可以通過定義服務器端參數值來覆蓋應用內默認值。參數鍵和參數值是字符串,但是當您在應用程序中使用這些值時,參數值可以轉換為其他數據類型。

使用 Firebase 控制台或Remote Config REST API ,您可以為參數創建新的默認值,以及用於定位應用實例組的條件值。每次您在 Firebase 控制台中更新配置時,Firebase 都會創建並發布新版本的遠程配置模板。以前的版本被存儲,允許您根據需要檢索或回滾。您也可以通過 REST API 使用這些操作。

本指南解釋了參數、條件、規則、條件值,以及各種參數值在遠程配置服務器和您的應用程序中的優先級。它還提供了有關用於創建條件的規則類型的詳細信息。

條件、規則和條件值

條件用於定位一組應用程序實例。條件由一個或多個規則組成,對於給定的應用程序實例,這些規則必須全部計算為true ,條件才能計算為true 。如果規則的值未定義(例如,當沒有可用值時),則該規則將評估為false

例如,定義應用啟動頁面的參數可以使用簡單規則if device_os = Android根據操作系統類型顯示不同的圖像:

Firebase 控制台中“splash_page”參數的屏幕截圖,顯示了 iOS 的默認值和 Android 的條件值

或者,可以使用時間條件來控制您的應用何時顯示特殊促銷項目。

一個參數可以有多個使用不同條件的條件值,並且參數可以在項目內共享條件。在 Firebase 控制台的“參數”選項卡中,您可以查看每個參數的條件值的獲取百分比。該指標表示過去 24 小時內收到每個值的請求的百分比。

參數值優先級

一個參數可能有幾個與之關聯的條件值。以下規則確定從遠程配置服務器獲取哪個值,以及在特定時間點在給定應用程序實例中使用哪個值:

服務端參數值根據以下優先級列表獲取

  1. 首先,應用條件值,如果有條件對於給定的應用程序實例評估為true 。如果多個條件的計算結果為true ,則 Firebase 控制台 UI 中顯示的第一個(頂部)具有優先權,並且在應用從後端獲取值時提供與該條件關聯的條件值。您可以通過在條件選項卡中拖放條件來更改條件的優先級。

  2. 如果沒有條件值為true的條件值,則在應用程序從後端獲取值時提供服務器端默認值。如果後端不存在參數,或者默認值設置為Use in-app default ,則在應用獲取值時不會為該參數提供任何值。

在您的應用程序中,參數值由get方法根據以下優先級列表返回

  1. 如果從後端獲取值然後激活,則應用程序使用獲取的值。激活的參數值是持久的。
  2. 如果沒有從後端獲取值,或者從遠程配置後端獲取的值尚未激活,則應用使用應用內默認值。

    有關獲取和設置默認值的更多信息,請參閱下載遠程配置模板默認值

  3. 如果未設置應用內默認值,則應用使用靜態類型值(例如0代表intfalse代表boolean )。

此圖總結了遠程配置後端和您的應用程序中參數值的優先級:

顯示上述有序列表描述的流程的圖表

參數值數據類型

遠程配置允許您為每個參數選擇一種數據類型,並在模板更新之前根據該類型驗證所有服務器端值。數據類型在getRemoteConfig請求中存儲和返回。

目前支持的類型有:

  • String
  • Boolean
  • Number
  • JSON

在 Firebase 控制台 UI 中,可以從參數鍵旁邊的下拉菜單中選擇數據類型。在 REST API 中,可以使用參數對像中的value_type字段來設置類型。

參數組

遠程配置允許您將參數組合在一起,以獲得更有條理的 UI 和心理模型。

例如,假設您在推出新的登錄功能時需要啟用或禁用三種不同的身份驗證類型。使用遠程配置,您可以創建三個參數以根據需要啟用類型,然後將它們組織在一個名為“新登錄”的組中,無需添加前綴或特殊排序。

您可以使用 Firebase 控制台或 Remote Config REST API 創建參數組。您創建的每個參數組在遠程配置模板中都有一個唯一的名稱。創建參數組時,請記住:

  • 參數在任何時候只能包含在一個組中,並且參數鍵在所有參數中仍然必須是唯一的。
  • 參數組名稱限制為 256 個字符。
  • 如果您同時使用 REST API 和 Firebase 控制台,請確保更新任何 REST API 邏輯以處理髮佈時的參數組。

使用 Firebase 控制台創建或修改參數組

您可以在 Firebase 控制台的“參數”選項卡中對參數進行分組。創建或修改組:

  1. 選擇管理組
  2. 選擇要添加的參數的複選框,然後選擇移動到組
  3. 選擇現有組,或通過輸入名稱和描述並選擇創建新組來創建新組。保存組後,可以使用發布更改按鈕進行發布。

以編程方式創建組

Remote Config REST API提供了一種自動創建和發布參數組的方法。假設您熟悉 REST 並設置為授權對 API 的請求,您可以執行以下步驟以編程方式管理組:

  1. 檢索當前模板
  2. 添加 JSON 對像以表示您的參數組
  3. 使用 HTTP PUT 請求發布參數組。

parameterGroups對象包含組鍵、嵌套描述和分組參數列表。請注意,每個組鍵必須是全局唯一的。

例如,以下是模板修訂版的摘錄,該修訂版添加了帶有一個參數的參數組“新菜單”, pumpkin_spice_season

{
  "parameters": {},
  "version": {
    "versionNumber": "1",

    …


  },
  "parameterGroups": {
    "new menu": {
      "description": "New Menu",
      "parameters": {
        "pumpkin_spice_season": {
          "defaultValue": {
            "value": "true"
          },
          "description": "Whether it's currently pumpkin spice season."
        }
      }
    }
  }
}

條件規則類型

Firebase 控制台支持以下規則類型。 Remote Config REST API 中提供了等效功能,詳見條件表達式參考

規則類型操作員筆記
應用程序==從與您的 Firebase 項目關聯的應用的應用 ID 列表中選擇。當您將應用添加到 Firebase 時,您需要輸入用於定義在遠程配置規則中作為應用 ID公開的屬性的包 ID 或 Android 包名稱。

按如下方式使用此屬性:
  • 對於 Apple 平台:使用應用程序的CFBundleIdentifier 。您可以在 Xcode 中應用的主要目標的General選項卡中找到Bundle Identifier
  • 對於 Android:使用應用程序的applicationId 。您可以在應用級build.gradle文件中找到applicationId
應用版本對於字符串值:
完全匹配,
包含,
不含,
正則表達式

對於數值:
=, ≠, >, ≥, <, ≤

指定要定位的應用版本。

在使用此規則之前,您必須使用App ID規則來選擇與您的 Firebase 項目關聯的 Android/Apple 應用。

對於 Apple 平台:使用應用程序的CFBundleShortVersionString

注意:確保您的 Apple 應用使用 Firebase Apple 平台 SDK 版本 6.24.0 或更高版本,因為早期版本中不會發送 CFBundleShortVersionString(請參閱發行說明)。

對於 Android:使用應用程序的versionName

此規則的字符串比較區分大小寫。使用完全匹配包含不包含正則表達式運算符時,您可以選擇多個值。

使用正則表達式運算符時,您可以創建RE2格式的正則表達式。您的正則表達式可以匹配全部或部分目標版本字符串。您還可以使用^$錨來匹配目標字符串的開頭、結尾或全部內容。

內部編號對於字符串值:
完全匹配,
包含,
不含,
正則表達式

對於數值:
=, ≠, >, ≥, <, ≤

指定要定位的應用程序的構建。

在使用此規則之前,您必須使用App ID規則來選擇與您的 Firebase 項目關聯的 Apple 或 Android 應用。

此運算符僅適用於 Apple 和 Android 應用程序。它對應於 Apple 的應用程序的CFBundleVersion和 Android 的versionCode 。此規則的字符串比較區分大小寫。

使用完全匹配包含不包含正則表達式運算符時,您可以選擇多個值。

使用正則表達式運算符時,您可以創建RE2格式的正則表達式。您的正則表達式可以匹配全部或部分目標版本字符串。您還可以使用^$錨來匹配目標字符串的開頭、結尾或全部內容。

平台== iOS
安卓
網絡
操作系統==

指定要定位的操作系統。

在使用此規則之前,您必須使用App ID規則來選擇與您的 Firebase 項目關聯的Web 應用

如果操作系統及其版本與指定列表中的目標值匹配,則對於給定的 Web 應用程序實例,此規則評估為true
瀏覽器==

指定要定位的瀏覽器。

在使用此規則之前,您必須使用App ID規則來選擇與您的 Firebase 項目關聯的Web 應用

如果瀏覽器及其版本與指定列表中的目標值匹配,則對於給定的 Web 應用程序實例,此規則評估為true
約會時間<=, >指定的日期和時間,可以是設備時區或指定的時區,例如“(GMT+11) 悉尼時間”。將當前時間與設備獲取時間進行比較。
隨機百分位用戶<=, > 0-100

使用此字段將更改應用於應用程序實例的隨機樣本(樣本大小小至 0.0001%),使用<=>運算符將用戶(應用程序實例)分組。

根據該項目中定義的,每個應用程序實例都永久映射到隨機整數或小數。除非您選擇或創建另一個密鑰,否則規則將使用默認密鑰(在 Firebase 控制台中顯示為DEF )。您可以通過清除Randomize users using this key字段來返回使用默認鍵的規則。您可以跨規則使用單個鍵來一致地處理給定百分比範圍內的相同應用程序實例。或者,您可以通過創建新鍵為給定百分比範圍選擇一組新的隨機分配的應用程序實例。

例如,要創建兩個相關條件,每個條件都適用於不重疊的 5% 應用程序用戶,您可以讓一個條件包含<= 5%規則,而另一個條件包含> 5%規則和<= 10%規則。為了使某些用戶可以隨機出現在兩個組中,請在每個條件中為規則使用不同的鍵。

觀眾中的用戶==從您為項目設置的 Google Analytics(分析)受眾列表中選擇一個或多個。

此規則需要 App ID 規則來選擇與您的 Firebase 項目關聯的應用。

注意:由於許多 Analytics 受眾是由事件或用戶屬性定義的,這些屬性可以基於應用用戶的操作,因此受眾中的用戶規則可能需要一些時間才能對給定的應用實例生效。

地區/國家的設備==選擇一個或多個地區或國家。如果給定應用程序實例位於所列的任何地區或國家/地區,則此規則評估為true 。設備國家/地區代碼由請求中的設備 IP 地址或 Firebase Analytics 確定的國家/地區代碼確定(如果 Analytics 數據與 Firebase 共享)。
設備語言==選擇一種或多種語言。如果給定應用實例安裝在使用所列語言之一的設備上,則此規則評估為true
用戶屬性對於字符串值:
包含,
不含,
完全匹配,
正則表達式

對於數值:
=, ≠, >, ≥, <, ≤

注意:在客戶端上,您只能為用戶屬性設置字符串值。對於使用數字運算符的條件,遠程配置將相應用戶屬性的值轉換為整數/浮點數。
從可用的 Google Analytics(分析)用戶屬性列表中進行選擇。要了解如何使用用戶屬性為非常特定的用戶群定制應用程序,請參閱遠程配置和用戶屬性

要了解有關用戶屬性的更多信息,請參閱以下指南:

使用完全匹配包含不包含正則表達式運算符時,可以選擇多個值。

使用正則表達式運算符時,您可以創建RE2格式的正則表達式。您的正則表達式可以匹配全部或部分目標版本字符串。您還可以使用^$錨來匹配目標字符串的開頭、結尾或全部內容。

注意:在創建遠程配置條件時,自動收集的用戶屬性當前不可用。
進口段==選擇一個或多個導入的片段。此規則需要設置自定義導入段
安裝 ID ==指定一個或多個安裝 ID(最多 50 個)作為目標。如果給定安裝的 ID 在逗號分隔的值列表中,則此規則評估為true

要了解如何獲取安裝 ID,請參閱檢索客戶端標識符

搜索參數和條件

您可以使用遠程配置參數選項卡頂部的搜索框從Firebase 控制台搜索項目的參數鍵、參數值和條件。

參數和條件的限制

在一個 Firebase 項目中,您最多可以有 2000 個參數和最多 500 個條件。參數鍵最長可達 256 個字符,必須以下劃線或英文字母字符(AZ、az)開頭,還可以包含數字。項目中參數值字符串的總長度不能超過 1,000,000 個字符。

下一步

要開始配置您的 Firebase 項目,請參閱設置 Firebase 遠程配置項目