Firebase远程配置 - 检查值是否存在

时间:2017-12-15 13:36:58

标签: android firebase firebase-remote-config

我想在我的应用程序中为一些布尔值实现一种代理。逻辑如下:

  1. 我从后端收到一组值
  2. 我在Firebase中设置了一些这些值
  3. 在应用中使用值时,我首先检查它是否存在于Firebase中

    3.1。如果存在,请使用Firebase值

    3.2。如果它不存在,请采用后端值

  4. 问题是 - 如何检查Firebase远程配置中是否存在该值?

3 个答案:

答案 0 :(得分:3)

我发现了另一种方法,可能对登陆这里的其他人有用:

val rawValue = remoteConfig.getValue(key)
val exists = rawValue.source == FirebaseRemoteConfig.VALUE_SOURCE_REMOTE

在这种情况下,exists仅在从远程返回该值(并且未将其设置为默认值或提供的静态值)时为true。可接受的答案容易出错,因为不考虑空字符串是从远程返回的有效字符串的情况

这里是FirebaseRemoteConfigValue的文档

答案 1 :(得分:2)

我找到了解决方案:

Firebase远程配置会将所有值提取为Strings,然后才会将其映射到便捷方法中的其他类型,例如getBoolean()getLong()等。

因此,可以按如下方式检查布尔配置值是否存在:

String value = firebaseRemoteConfig.getString("someKey");

if(value.equals("true")){
    //The value exists and the value is true
} else if(value.equals("false")) {
    //The value exists and the value is false
} else if(value.equals("")) {
    //The value is not set in Firebase
}

其他类型也是如此,即firebase上设置为64的long值将从getString()返回"64"

答案 2 :(得分:1)

远程配置已经执行此操作,如documentation中所述。您有义务为控制台中尚未定义的参数提供default values。它们完全按照您的描述工作,无需进行任何额外的工作。在您执行fetch之前,将使用这些默认值。如果在控制台中定义了值,则将使用它而不是默认值。