RemoteConfig.configValue(forKey :)返回默认值

时间:2019-03-25 07:16:05

标签: firebase firebase-remote-config

我在iOS上使用Firebase Remote Config和Firebase A / B测试。 我看到从远程配置收到的值有时会重置为默认值。 我认为,即使应用程序上的服务器缓存已过期,激活的配置值也不会删除。 是否有任何情况将激活值恢复为默认值?

  • 应用内:设置了默认值A
  • 获取->激活
  • 从服务器上获得了B
  • 离开应用程序。
  • 几个小时后,我回到应用程序,似乎值重置为A

获取并激活策略

该应用在启动时会一次激活远程配置值。

  

当用户启动您的应用程序时,您立即调用ActivateFetched()。这将应用您先前从云中获取的所有旧值。然后,您的用户可以立即开始与您的应用进行交互。同时,您将启动异步fetch()调用以从云中获取新值。在此调用的完成处理程序中,您什么也不做。哎呀,您甚至根本不需要添加完成处理程序。从云中获取的那些值将保留在设备上本地存储,直到用户下次启动应用程序时调用activateFetched。

ABTesting设置

  • 目标用户:应用程序的100%
  • 变异键-> SOME_KEY
  • 控制组:50%->值= A
  • 变体B:50%->值= 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)返回空。

0 个答案:

没有答案