開始使用 Firebase 遠端設定


您可以使用 Firebase Remote Config 定義應用程式中的參數並進行更新 設定,讓您可以修改模型的外觀與行為 不必發布應用程式更新。 本指南將逐步引導您踏出第一步,並提供一些 您可以複製或下載 firebase/quickstart-android GitHub 存放區。

步驟 1:在應用程式中加入 Firebase 和遠端設定 SDK

  1. 如果還沒試過 將 Firebase 新增至您的 Android 專案

  2. 對於 Remote Config,則必須使用 Google Analytics應用程式執行個體的條件式指定功能 使用者屬性和目標對象請確認 您在專案中啟用 Google Analytics

  3. 模組 (應用程式層級) Gradle 檔案中 (通常為 <project>/<app-module>/build.gradle.kts<project>/<app-module>/build.gradle)、 新增 Android Remote Config 程式庫的依附元件。建議您使用 Firebase Android BoM敬上 管理程式庫版本管理

    此外,設定 Analytics 時,您需要新增 Firebase SDK 給您的應用程式 Google Analytics

    dependencies {
        // Import the BoM for the Firebase platform
        implementation(platform("com.google.firebase:firebase-bom:33.2.0"))
    
        // Add the dependencies for the Remote Config and Analytics libraries
        // When using the BoM, you don't specify versions in Firebase library dependencies
        implementation("com.google.firebase:firebase-config")
        implementation("com.google.firebase:firebase-analytics")
    }

    只要使用 Firebase Android BoM, 應用程式一律會使用相容的 Firebase Android 程式庫版本。

    (替代做法) 新增 Firebase 程式庫依附元件,「不使用」 BoM

    如果選擇不使用 Firebase BoM,請指定各個 Firebase 程式庫版本 都屬於依附元件行

    請注意,如果您在應用程式中使用多個 Firebase 程式庫,強烈建議您 建議使用 BoM 管理程式庫版本,確保所有版本 相容。

    dependencies {
        // Add the dependencies for the Remote Config and Analytics libraries
        // When NOT using the BoM, you must specify versions in Firebase library dependencies
        implementation("com.google.firebase:firebase-config:22.0.0")
        implementation("com.google.firebase:firebase-analytics:22.1.0")
    }
    敬上
    在尋找 Kotlin 專用的程式庫模組嗎?距離開始還有 2023 年 10 月 (Firebase BoM 32.5.0),Kotlin 和 Java 開發人員皆可 依附於主要程式庫模組 (詳情請參閱 這項計畫的常見問題)。

,瞭解如何調查及移除這項存取權。

步驟 2:取得 Remote Config 單例模式物件

取得 Remote Config 物件例項並設定 允許經常重新整理的最小擷取間隔:

Kotlin+KTX

val remoteConfig: FirebaseRemoteConfig = Firebase.remoteConfig
val configSettings = remoteConfigSettings {
    minimumFetchIntervalInSeconds = 3600
}
remoteConfig.setConfigSettingsAsync(configSettings)

Java

FirebaseRemoteConfig mFirebaseRemoteConfig = FirebaseRemoteConfig.getInstance();
FirebaseRemoteConfigSettings configSettings = new FirebaseRemoteConfigSettings.Builder()
        .setMinimumFetchIntervalInSeconds(3600)
        .build();
mFirebaseRemoteConfig.setConfigSettingsAsync(configSettings);

單例模式物件是用來儲存應用程式內的預設參數值 更新過的參數值,並且控制系統擷取到 可用的更新

在開發期間,建議您設定相對較低的擷取次數下限 間隔。請參閱節流 瞭解詳情

步驟 3:設定應用程式內預設參數值

您可以在 Remote Config 中設定應用程式內預設參數值 物件,因此應用程式在連線至 Remote Config 後端,這樣一來,在沒有預設值的情況下,就無法使用預設值 您在後端中設定的連線

  1. 使用 Map 物件或 XML 資源檔案 儲存在應用程式的 res/xml 資料夾中。Remote Config 快速入門導覽課程 範例應用程式會使用 XML 檔案 定義預設參數名稱和值。

    如果已設定 Remote Config 後端參數值, 您可以下載產生的 XML 檔案,內含所有預設值和 將檔案儲存至應用程式的 res/xml 目錄:

    REST

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

    Firebase 個控制台

    1. 參數中 開啟 「選單」, 選取「下載預設值」

    2. 系統提示時,啟用「.xml for Android」,然後按一下 下載檔案

  2. 使用以下程式碼將這些值新增至 Remote Config 物件 setDefaultsAsync(int), 如下所示:

    Kotlin+KTX

    remoteConfig.setDefaultsAsync(R.xml.remote_config_defaults)

    Java

    mFirebaseRemoteConfig.setDefaultsAsync(R.xml.remote_config_defaults);

步驟 4:取得要用於應用程式的參數值

您現在可以從 Remote Config 物件取得參數值。如果您為 擷取這些值,然後予以啟用 這些價值適用於您的應用程式。否則,您可以取得 參數值 setDefaultsAsync(int)。 如要取得這些值,請呼叫下列對應至資料類型的方法 ,並提供參數鍵做為引數:

步驟 5:在 Remote Config 後端設定參數值

使用 Firebase 控制台或 Remote Config 個後端 API 您可以建立新的伺服器端預設值,用來覆寫應用程式內的值 將採用您所需的條件式邏輯或使用者指定目標為依據這個區段 說明透過 Firebase 控制台建立這些值的步驟。

  1. Firebase 控制台中開啟專案。
  2. 從選單中選取 Remote Config,查看Remote Config 儀表板中指定這項設定。
  3. 使用與剛才定義的參數相同的名稱定義參數 您可以為每個參數設定預設值 (也就是 最終覆寫對應的應用程式內預設值),您也可以 設定條件式值詳情請參閱「Remote Config 參數和 條件

步驟 6:擷取並啟用值

  1. 如要從 Remote Config 後端擷取參數值,請呼叫 fetch() 方法。系統會擷取您在後端設定的任何值。 並儲存在 Remote Config 物件中。
  2. 如要讓應用程式使用擷取的參數值,請呼叫 activate()敬上 方法。

    如要透過單一呼叫擷取及啟用值, 可以使用 fetchAndActivate() 要求,從 Remote Config 後端,並提供給應用程式:

    Kotlin+KTX

    remoteConfig.fetchAndActivate()
        .addOnCompleteListener(this) { task ->
            if (task.isSuccessful) {
                val updated = task.result
                Log.d(TAG, "Config params updated: $updated")
                Toast.makeText(
                    this,
                    "Fetch and activate succeeded",
                    Toast.LENGTH_SHORT,
                ).show()
            } else {
                Toast.makeText(
                    this,
                    "Fetch failed",
                    Toast.LENGTH_SHORT,
                ).show()
            }
            displayWelcomeMessage()
        }

    Java

    mFirebaseRemoteConfig.fetchAndActivate()
            .addOnCompleteListener(this, new OnCompleteListener<Boolean>() {
                @Override
                public void onComplete(@NonNull Task<Boolean> task) {
                    if (task.isSuccessful()) {
                        boolean updated = task.getResult();
                        Log.d(TAG, "Config params updated: " + updated);
                        Toast.makeText(MainActivity.this, "Fetch and activate succeeded",
                                Toast.LENGTH_SHORT).show();
    
                    } else {
                        Toast.makeText(MainActivity.this, "Fetch failed",
                                Toast.LENGTH_SHORT).show();
                    }
                    displayWelcomeMessage();
                }
            });

這些更新過的參數值會影響行為和外觀 建議您每次都啟用擷取到的值, 流暢的使用者體驗,例如使用者下次開啟 應用程式。請參閱遠端設定載入策略。 。

步驟 7:即時監聽更新

擷取參數值後,您可以使用即時 Remote Config 執行以下操作: 監聽來自 Remote Config 後端的更新。即時 有可用的更新時,Remote Config 會發出已連線裝置的訊號, 發布新的 Remote Config 後自動擷取變更 版本。

Android v21.3.0 以上版本 (Firebase BoM) 的 Firebase SDK 支援即時更新 v31.2.4+)。

  1. 在應用程式中使用 addOnConfigUpdateListener(),即可開始監聽更新 並自動擷取任何新的參數值導入 onUpdate() 即可啟用更新後的設定。

    Kotlin+KTX

    remoteConfig.addOnConfigUpdateListener(object : ConfigUpdateListener {
        override fun onUpdate(configUpdate : ConfigUpdate) {
           Log.d(TAG, "Updated keys: " + configUpdate.updatedKeys);
    
           if (configUpdate.updatedKeys.contains("welcome_message")) {
               remoteConfig.activate().addOnCompleteListener {
                   displayWelcomeMessage()
               }
           }
        }
    
        override fun onError(error : FirebaseRemoteConfigException) {
            Log.w(TAG, "Config update error with code: " + error.code, error)
        }
    })

    Java

    mFirebaseRemoteConfig.addOnConfigUpdateListener(new ConfigUpdateListener() {
        @Override
        public void onUpdate(ConfigUpdate configUpdate) {
            Log.d(TAG, "Updated keys: " + configUpdate.getUpdatedKeys());
            mFirebaseRemoteConfig.activate().addOnCompleteListener(new OnCompleteListener<Boolean>() {
                @Override
                public void onComplete(@NonNull Task<Boolean> task) {
                    displayWelcomeMessage();
                }
            });
        }
        @Override
        public void onError(FirebaseRemoteConfigException error) {
            Log.w(TAG, "Config update error with code: " + error.getCode(), error);
        }
    });
  2. 下次發布新版 Remote Config 時,裝置 呼叫這些函式並監聽變更 ConfigUpdateListener

調節

如果應用程式在短時間內擷取太多次,系統將擷取呼叫 並導致 SDK 傳回限制值 FirebaseRemoteConfigFetchThrottledException。在 SDK 17.0.0 版之前, 在 60 分鐘內最多執行 5 個擷取要求 (較新的版本有較寬鬆的限制)。

在應用程式開發期間,建議您盡量擷取及啟用設定 讓您快速疊代 測試應用程式。即時 Remote Config 更新會自動略過 更新快取。為了適應快速疊代 某個專案最多可有 10 位開發人員,您可以暫時設定一個 FirebaseRemoteConfigSettings 物件的擷取間隔下限較低 (setMinimumFetchIntervalInSeconds)。

Remote Config 的預設擷取間隔下限為 12 小時, 這代表在 12 小時內,系統不會多次從後端擷取設定 則無論實際發出多少擷取呼叫。具體而言, 擷取間隔時間下限則依下列順序決定:

  1. fetch(long) 中的參數
  2. FirebaseRemoteConfigSettings.setMinimumFetchIntervalInSeconds(long) 中的參數
  3. 預設值是 12 小時

如要將最短擷取間隔設為自訂值,請使用 FirebaseRemoteConfigSettings.Builder.setMinimumFetchIntervalInSeconds(long)

後續步驟

如果尚未體驗,請前往Remote Config 用途,以及 重要概念和進階策略說明文件,包括: