繁体   English   中英

Firebase 远程配置:如何在 Map 中获取所有配置<string, string></string,>

[英]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转换为字符串,但不能转换为BooleanLong

{
  "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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM