我在iOS上使用Firebase Remote Config和Firebase A / B测试。 我看到从远程配置收到的值有时会重置为默认值。 我认为,即使应用程序上的服务器缓存已过期,激活的配置值也不会删除。 是否有任何情况将激活值恢复为默认值?
A
。B
。A
。该应用在启动时会一次激活远程配置值。
当用户启动您的应用程序时,您立即调用ActivateFetched()。这将应用您先前从云中获取的所有旧值。然后,您的用户可以立即开始与您的应用进行交互。同时,您将启动异步fetch()调用以从云中获取新值。在此调用的完成处理程序中,您什么也不做。哎呀,您甚至根本不需要添加完成处理程序。从云中获取的那些值将保留在设备上本地存储,直到用户下次启动应用程序时调用activateFetched。
SOME_KEY
A
B
Podfile.lock
的Pod版本: - FirebaseABTesting (2.0.0):
- FirebaseRemoteConfig (3.1.0):
默认值为:
RemoteConfig.remoteConfig().setDefaults(["SOME_KEY": "A"])
要从远程配置中获取价值,请执行以下操作:
let value = RemoteConfig.remoteConfig().configValue(forKey: "SOME_KEY")
activateFetched()
A
(=默认值)。activateFetched
无效。activateFetched()
B
(如果选择了用户ABTestring的值'B')activateFetched()
A
(这就是问题所在)在上述情况下,如果应用程序获取并激活了值B
,
该值将保留在激活值缓存中,并且
我认为缓存值不会重置为A
。
这个假设正确吗?
应用从B
获得configValue(forKey: "SOME_KEY")
时
然后remoteConfig.allKeys(from: .remote, namespace: NamespaceGoogleMobilePlatform)
返回["SOME_KEY"]
。
但是,当应用从“ B”(以上启动序列中的最后一种情况)退回A
时,
然后remoteConfig.allKeys(from: .remote, namespace: NamespaceGoogleMobilePlatform)
返回空。