获取我们在 Firebase 峰会上发布的所有信息,了解 Firebase 可如何帮助您加快应用开发速度并满怀信心地运行应用。了解详情

开始使用 Firebase 远程配置

使用集合让一切井井有条 根据您的偏好保存内容并对其进行分类。


您可以使用 Firebase Remote Config 在您的应用程序中定义参数并在云端更新它们的值,从而允许您修改应用程序的外观和行为而无需分发应用程序更新。

Remote Config 库用于存储应用内默认参数值、从 Remote Config 后端获取更新的参数值,以及控制获取的值何时可用于您的应用。要了解更多信息,请参阅远程配置加载策略

本指南将引导您完成入门步骤并提供一些示例代码,所有这些代码都可以从firebase/quickstart-unity GitHub 存储库中克隆或下载。

第 1 步:将远程配置添加到您的应用

在使用Remote Config之前,您需要:

  • 注册您的 Unity 项目并将其配置为使用 Firebase。

    • 如果您的 Unity 项目已经使用 Firebase,那么它已经针对 Firebase 进行了注册和配置。

    • 如果您没有 Unity 项目,可以下载示例应用程序

  • Firebase Unity SDK (特别是FirebaseRemoteConfig.unitypackage )添加到您的 Unity 项目。

请注意,将 Firebase 添加到您的 Unity 项目涉及Firebase 控制台和您打开的 Unity 项目中的任务(例如,您从控制台下载 Firebase 配置文件,然后将它们移动到您的 Unity 项目中)。

第 2 步:设置应用内默认参数值

您可以在 Remote Config 对象中设置应用内默认参数值,以便您的应用在连接到 Remote Config 后端之前按预期运行,并且如果没有在后端设置默认值,则默认值可用。

为此,创建一个字符串字典,并用代表您要添加的默认值的键/值对填充它。如果您已经配置了 Remote Config 后端参数值,您可以下载包含这些键/值对的文件并使用它来构建您的字符串字典。有关详细信息,请参阅下载远程配置模板默认值

(调用SetDefaultsAsync()时,非字符串属性将转换为属性的类型)。

System.Collections.Generic.Dictionary<string, object> defaults =
  new System.Collections.Generic.Dictionary<string, object>();

// These are the values that are used if we haven't fetched data from the
// server
// yet, or if we ask for values that the server doesn't have:
defaults.Add("config_test_string", "default local string");
defaults.Add("config_test_int", 1);
defaults.Add("config_test_float", 1.0);
defaults.Add("config_test_bool", false);

Firebase.RemoteConfig.FirebaseRemoteConfig.DefaultInstance.SetDefaultsAsync(defaults)
  .ContinueWithOnMainThread(task => {

第 3 步:获取要在您的应用中使用的参数值

现在您可以从 Remote Config 对象中获取参数值。如果您在 Remote Config 后端设置值,获取它们,然后激活它们,则这些值可用于您的应用程序。否则,您将获得使用SetDefaultsAsync()配置的应用内参数值。

要获取这些值,请使用GetValue()并提供参数键作为参数。这将返回一个ConfigValue ,它具有将值转换为各种基本类型的属性。

第 4 步:在 Firebase 控制台中连接您的应用

Firebase 控制台中,将您的应用程序添加到您的 Firebase 项目。

第 5 步:设置参数值

  1. Firebase 控制台中,打开您的项目。
  2. 从菜单中选择远程配置以查看远程配置仪表板。
  3. 使用与您在应用程序中定义的参数相同的名称定义参数。对于每个参数,您可以设置默认值(最终将覆盖应用内默认值)和条件值。要了解更多信息,请参阅远程配置参数和条件

第 6 步:获取并激活值(根据需要)

要从远程配置后端获取参数值,请调用FetchAsync()方法。您在后端设置的任何值都将被提取并缓存在远程配置对象中。

// Start a fetch request.
// FetchAsync only fetches new data if the current data is older than the provided
// timespan.  Otherwise it assumes the data is "recent enough", and does nothing.
// By default the timespan is 12 hours, and for production apps, this is a good
// number. For this example though, it's set to a timespan of zero, so that
// changes in the console will always show up immediately.
public Task FetchDataAsync() {
  DebugLog("Fetching data...");
  System.Threading.Tasks.Task fetchTask =
  Firebase.RemoteConfig.FirebaseRemoteConfig.DefaultInstance.FetchAsync(
      TimeSpan.Zero);
  return fetchTask.ContinueWithOnMainThread(FetchComplete);
}

在上面的代码中, FetchComplete是一种方法,其签名与ContinueWithOnMainThread()重载之一的参数相匹配。

在下面的示例代码中, FetchComplete方法传递了上一个任务 ( fetchTask ),这允许FetchComplete确定它是否完成。该代码随后使用Info.LastFetchStatus确定完成是否成功。如果是这样,则使用activateAsync()激活远程配置参数值。

private void FetchComplete(Task fetchTask) {
  if (!fetchTask.IsCompleted) {
    Debug.LogError("Retrieval hasn't finished.");
    return;
  }

  var remoteConfig = FirebaseRemoteConfig.DefaultInstance;
  var info = remoteConfig.Info;
  if(info.LastFetchStatus != LastFetchStatus.Success) {
    Debug.LogError($"{nameof(FetchComplete)} was unsuccessful\n{nameof(info.LastFetchStatus)}: {info.LastFetchStatus}");
    return;
  }

  // Fetch successful. Parameter values must be activated to use.
  remoteConfig.ActivateAsync()
    .ContinueWithOnMainThread(
      task => {
        Debug.Log($"Remote data loaded and ready for use. Last fetch time {info.FetchTime}.");
    });
}

通过FetchAsync()获取的值在获取完成时缓存在本地,但在调用ActivateAsync()之前不可用。这使您能够确保新值不会在计算中应用,或者在其他可能导致问题或奇怪行为的时候应用。

第 7 步:(可选)启用开发者模式

要启用可用于在开发期间禁用节流的开发人员模式,您可以使用FirebaseRemoteConfig.Setting属性,设置新的ConfigSettings并将IsDeveloperMode设置为 true。

下一步

If you haven't already, explore the Remote Config use cases , and take a look at some of the key concepts and advanced strategies documentation, including: