最初,我从该链接实现了确切的远程配置示例:
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
?