我想在我的应用程序中为一些布尔值实现一种代理。逻辑如下:
在应用中使用值时,我首先检查它是否存在于Firebase中
3.1。如果存在,请使用Firebase值
3.2。如果它不存在,请采用后端值
问题是 - 如何检查Firebase远程配置中是否存在该值?
答案 0 :(得分:3)
我发现了另一种方法,可能对登陆这里的其他人有用:
val rawValue = remoteConfig.getValue(key)
val exists = rawValue.source == FirebaseRemoteConfig.VALUE_SOURCE_REMOTE
在这种情况下,exists
仅在从远程返回该值(并且未将其设置为默认值或提供的静态值)时为true。可接受的答案容易出错,因为不考虑空字符串是从远程返回的有效字符串的情况
答案 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之前,将使用这些默认值。如果在控制台中定义了值,则将使用它而不是默认值。