[英]Firebase Remote Config: How to get all config in Map<String, String>
有没有办法以字符串数据类型获取所有配置? 有一个公共方法getAll()
是Map<String, FirebaseRemoteConfigValue>
但值是一个接口。
@NonNull
public Map<String, FirebaseRemoteConfigValue> getAll() {
return getHandler.getAll();
}
在我们的设置中保证配置值是字符串数据类型。
FirebaseRemoteConfig 将您的数据作为 json 存储在应用程序的文件目录中。 而且这些值目前没有数据类型。 您可以将任何FirebaseRemoteConfigValue
转换为字符串,但不能转换为Boolean
或Long
。
{
"configs_key": {
"hello": "world",
"flag": "true",
"isOpen": "true or false :)", // may be string but not bool
},
// ...
}
我们可以看到FirebaseRemoteConfigValue
接口总是从一个值返回一个字符串,但对于其他原始数据类型可能会抛出一个IllegalArgumentException
。
interface FirebaseRemoteConfigValue {
@NonNull String asString();
boolean asBoolean() throws IllegalArgumentException;
// ...
}
可能有一个棘手的解决方案。 如果您可以为远程配置值添加前缀,则可以通过指定的前缀获取它们。 此技巧要求开发人员为所有字符串值设置前缀。 (可能不适合所有人)
// "str_salutation": "hello world", "str_language": "kotlin", "isSomething": "false"
config.getKeysByPrefix("str_").forEach { key ->
val value = config.getString(key)
println("key = $key, value=$value")
}
希望能帮助到你。
到目前为止,这就是我最终的结果,考虑到这个应用程序的所有配置值都是字符串的数据类型。
// Convert Firebase Remote Config values to String
val map = remoteConfig.all.mapValues { it.value.asString() }
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.