0

最初,我从该链接实现了确切的远程配置示例:

https://rnfirebase.io/docs/v3.3.x/config/example

    firebase.config().fetch()
  .then(() => {
    return firebase.config().activateFetched();
  })
  .then((activated) => {
    if (!activated) console.log('Fetched data not activated');
    return firebase.config().getValue('hasExperimentalFeature');
  })
  .then((snapshot) => {
    const hasExperimentalFeature = snapshot.val();

    if(hasExperimentalFeature) {
      enableSuperCoolFeature();
    }

    // continue booting app
  })
  .catch(console.error);

我的想法是不订阅远程配置。我只是想知道它在APP启动时是否有任何变化(componentWillMount)。

但是我看到在远程配置变量上方使用该代码不会在新的 APP 启动时更新。我搜索并发现关于 12 小时缓存的信息:

远程配置在第一次成功获取请求后在本地缓存值。默认情况下,缓存会在 12 小时后过期,但您可以通过将所需的缓存过期时间(以秒为单位)传递给 fetchWithExpirationDuration:completionHandler:(在 iOS 上)或 fetch(在 Android 上)来更改特定请求的缓存过期时间。

他们也不建议将该缓存更改为较小的值:

请注意,如果您将此过期时间减少到一个非常小的值,您可能会开始达到客户端限制,这会阻止您的客户端每小时发出多次获取请求。

https://firebase.google.com/support/faq/#remote-config-requests

但是,由于我必须在 APP 启动时更新值,所以我决定不遵循此建议并进行测试。在我使用firebase.config().fetch(0)(获取 0 以避免缓存)的测试中,APP 显然没有订阅远程配置。javascript 端没有侦听器。

那么,我可以继续firebase.config().fetch(0)放心使用吗?更新仅在代码运行时发生?内部执行情况如何firebase.config().fetch() / snapshot

4

1 回答 1

0

使用 0 秒的缓存超时仅用于开发目的。这在生产中对您不起作用。

根据文档,您可以在 60 分钟的窗口内获取 5 次 - 在被客户端 SDK 限制之前。

那对你有用吗?

于 2018-04-06T17:58:32.013 回答