Catch up on highlights from Firebase at Google I/O 2023. Learn more

遠程配置參數和條件

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

使用 Firebase 控制台、 Admin SDKRemote Config REST API ,您可以為參數創建新的默認值,以及用於定位應用程序實例組的條件值。每次您在 Firebase 控制台中更新配置時,Firebase 都會創建並發布新版本的遠程配置模板。以前的版本已存儲,允許您根據需要檢索或回滾。這些操作可通過 Firebase 控制台、Firebase Admin SDK 和 REST API 提供給您,並且在管理遠程配置模板版本中有更廣泛的描述。

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

條件、規則和條件值

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

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

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

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

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

參數值優先級

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

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

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

  2. 如果沒有條件值的計算結果為true ,則當應用程序從後端獲取值時,將提供服務器端默認值。如果後台不存在某個參數,或者默認值設置為使用應用內默認值,則應用獲取值時不會為該參數提供任何值。

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

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

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

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

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

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

參數值數據類型

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

目前支持的類型有:

  • String
  • Boolean
  • Number
  • JSON

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

參數組

Remote Config 允許您將參數組合在一起以獲得更有條理的 UI 和心智模型。

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

您可以使用 Firebase 控制台或遠程配置 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對象包含組鍵、嵌套描述和分組參數列表。請注意,每個組密鑰必須是全局唯一的。

例如,下面是一個模板修訂版的摘錄,它添加了參數組“new menu”和一個參數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 或 Android 程序包名稱,用於定義在遠程配置規則中公開為應用程序 ID的屬性。

按如下方式使用此屬性:
  • 對於 Apple 平台:使用應用程序的CFBundleIdentifier 。您可以在 Xcode 中應用的主要目標的常規選項卡中找到捆綁包標識符
  • 對於 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
設備類別是,不是移動的此規則評估訪問您的網絡應用程序的設備是移動設備還是非移動設備(桌面或控制台)。此規則類型僅適用於 Web 應用程序。
語言選擇一種或多種語言。如果給定應用程序實例安裝在使用所列語言之一的設備上,則此規則對給定應用程序實例的計算結果為true
國家/地區選擇一個或多個地區或國家。如果給定應用程序實例位於列出的任何地區或國家/地區,則此規則對給定應用程序實例的評估結果為true 。設備國家代碼是使用請求中的設備 IP 地址或 Firebase Analytics 確定的國家代碼確定的(如果 Analytics 數據與 Firebase 共享)。
用戶受眾包括至少一個從您為項目設置的 Google Analytics 受眾列表中選擇一個或多個。

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

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

用戶屬性對於字符串值:
包含,
不含,
完全匹配,
正則表達式

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

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

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

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

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

注意:創建遠程配置條件時,自動收集的用戶屬性目前不可用。
隨機百分比的用戶滑塊(在 Firebase 控制台中。REST API使用<=>和運算符between )。 0-100

使用此字段將更改應用到應用程序實例的隨機樣本(樣本量小至 .0001%),使用滑塊小部件將隨機洗牌的用戶(應用程序實例)分成組。

根據該項目中定義的種子,每個應用程序實例都被持久映射到一個隨機的整數或分數。

除非您修改種子值,否則規則將使用默認鍵(在 Firebase 控制台中顯示為編輯種子)。您可以通過清除“種子”字段將規則恢復為使用默認密鑰。

要始終如一地處理給定百分比範圍內的相同應用程序實例,請在不同條件下使用相同的種子值。或者,通過指定新種子,為給定的百分比範圍選擇一組新的隨機分配的應用程序實例。

例如,要創建兩個相關條件,每個條件都適用於 5% 的非重疊應用用戶,您可以將一個條件配置為匹配 0% 到 5% 之間的百分比,並將另一個條件配置為匹配 5% 到 5% 之間的範圍10%。要允許某些用戶隨機出現在兩個組中,請為每個條件中的規則使用不同的種子值。

導入段選擇一個或多個導入的段。此規則需要設置自定義導入段
約會時間之前,之後指定的日期和時間,可以是設備時區,也可以是指定時區,例如“(GMT+11) 悉尼時間”。將當前時間與設備獲取時間進行比較。
先開之前,之後指定時區的指定日期和時間。

匹配指定時間範圍內首次打開目標應用的用戶。

需要以下 SDK:

  • 適用於 Google Analytics 的 Firebase SDK
  • Apple 平台 SDK v9.0.0+ 或 Android SDK v21.1.1+ (Firebase BoM v30.3.0+)

安裝編號指定一個或多個安裝 ID(最多 50 個)作為目標。如果安裝的 ID 在以逗號分隔的值列表中,則此規則對於給定安裝的計算結果為true

要了解如何獲取安裝 ID,請參閱檢索客戶端標識符
用戶存在(無操作員)以當前項目中所有應用程序的所有用戶為目標。

使用此條件規則匹配項目內的所有用戶,無論應用程序或平台如何。

搜索參數和條件

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

參數和條件的限制

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

查看參數和條件的變化

您可以從Firebase 控制台查看遠程配置模板的最新更改。對於每個單獨的參數和條件,您可以:

  • 查看上次修改參數或條件的用戶的名稱。

  • 如果更改發生在同一天,請查看自更改發佈到活動遠程配置模板以來經過的分鐘數或小時數。

  • 如果更改發生在一天或多天前,請查看更改發佈到活動遠程配置模板的日期。

參數更新

在 Remote Config Parameters頁面上, Last published列顯示最後修改每個參數的用戶和更改的最後發布日期:

  • 要查看分組參數的更改元數據,請展開參數組。

  • 要按發布日期升序或降序排序,請單擊上次發布的列標籤。

條件更新

在 Remote Config Conditions頁面上,您可以在每個條件下的Last modified旁邊看到最後修改條件的用戶和他們修改它的日期。

下一步

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