Firebase Remote Config 加载策略

Firebase Remote Config 为如何及何时从服务器提取新值并在应用中激活这些值提供了充分的灵活性,可让您通过控制任何可见配置更改的时间来确保提供优质的最终用户体验。您可以在应用启动时使用 fetchAndActivate() 方法提取新值,并使用实时 Remote Config 作为补充方法以便在有新版本的 Remote Config 发布后自动提取最新的参数值。

本指南介绍了几种加载策略,并讨论了为应用选择最佳方案的关键注意事项。

策略 1:在加载时提取并激活

在此策略中,您的应用首次启动时会调用 fetchAndActivate(),以便从 Remote Config 获取新值,并在加载完成后立即激活这些值。这种简单的方法非常适用于不会在界面中引起任何明显视觉变化的配置更改。当用户正在使用界面时,应避免在界面可能发生明显变化的情况下使用此策略。

在应用调用 fetchAndActivate() 后,便可开始通过调用 addOnConfigUpdateListener 来实时监听参数值更新。此方法会开始监听参数值在任何服务器端的更新,自动提取更新的值,然后调用监听器。一种简单的策略便是在监听器中激活新值。不过,正如在上文 fetchAndActivate() 部分所述,应避免在易发生变化的界面采用这种即时激活方法。

策略 2:在加载屏幕后激活

您可以利用加载屏幕来补救策略 1 中遇到的潜在界面问题。您应当显示加载屏幕并在完成处理程序中调用 fetchAndActivate,而不是立即启动应用。随后马上再次使用回调或通知,关闭加载屏幕并允许用户开始与您的应用进行交互。

如果您使用此策略,建议您向加载屏幕添加超时。对于 Remote Config,一分钟超时可能太长,无法为用户提供良好的应用启动体验。

若通过调用 addOnConfigUpdateListener 监听实时 Remote Config 更新,这种策略则非常有效。在加载屏幕显示时添加监听器,然后在应用的一个或多个时间点使用 activate()(所选时间点的 Remote Config 值应该不会对界面造成明显的视觉变化)。

策略 3:为下次启动加载新值

加载新的配置值,以便在应用下次启动时再激活,这也是一种有效的策略。在此策略中,您的应用会在启动时激活提取的值,然后再尝试提取新值,这种做法假设应用可能已经提取但尚未激活新配置值。该策略的操作顺序如下:

  1. 启动时,立即激活之前提取的值。这将应用您在上一会话中从服务器下载的所有值,该过程几乎是即时完成的。
  2. 当用户与您的应用交互时,启动异步调用以根据默认最小提取间隔提取新值,并添加实时配置更新监听器。该实时监听器将在应用运行过程中自动提取在服务器上发布的任何值。实时更新会绕过最小提取间隔设置。
  3. 在此提取调用的完成处理程序或回调中,不执行任何操作。您的应用将保留下载的值,直到您在应用下次启动时激活这些值。

借助此策略,用户等待时间将大大减少。在应用生命周期中,根据需要将提取策略和实时监听器策略与 activate() 调用结合起来使用,以确保在用户与您的应用交互时,系统向他们呈现的是 Remote Config 中的最新值。

应该避免使用的加载策略

基于上文中关于加载策略优缺点的讨论,您可能已经了解到,我们应该避免几种使用模式。

  • 切勿在用户查看界面或与界面进行交互时更新或切换界面的各个方面,除非出于应用或业务原因您不得不这么做,例如移除与刚刚结束的促销活动有关的选项。
  • 切勿同时发送大量提取请求,这可能导致服务器限制您的应用。如果您需要频繁提取更新,请使用实时 Remote Config。虽然在大多数生产场景中,发生这种限制情况的风险很低,但在积极开发阶段可能会出现这种问题,而实时 Remote Config 正是为此类使用情形而设计的。请参阅节流指南
  • 请勿依赖网络连接来获取 Remote Config 值。务必设置应用内默认参数值,确保应用始终按预期运行。您可以使用下载的模板默认值定期同步应用和 Remote Config 后端的默认值。

后续步骤

这三种基本策略不能代表加载配置值的所有方式。您可以根据自己的需求制定更为复杂的策略。

查看适用于您平台的 API 参考文档,以详细了解用于提取和激活配置值的具体调用。