在没有应用程序互联网的情况下启动时无法读取本地 Firebase 远程配置 plist

Local Firebase remote config plist can't be read when launching without app internet

我在从本地 .plist 文件读取 firebase 远程配置时遇到问题(如果用户在第一次打开应用程序时获取远程配置值时没有互联网连接,则提供默认值)。

只有在离线模式下启动应用程序时才会发生这种情况。 只是为了更新:

  1. 文件名 100% 正确。检查了很多次。
  2. 已检查 plist 文件 - 可能已损坏或使用终端命令:plutil PATH - 一切正常。

当前设置:

初始化远程配置服务时:

let settings = RemoteConfigSettings()
settings.minimumFetchInterval = 0
RemoteConfig.remoteConfig().setDefaults(fromPlist: remoteConfigDefaults)
RemoteConfig.remoteConfig().configSettings = settings

然后尝试读取数组值:

func arrayValue(forKey key: RemoteConfigKey) -> [String] {
    if localStorage.isRemoteConfigDebugEnabled,
        let localValue = localStorage.getRemoteConfigValue(forKey: key) as? String {
        return localValue.components(separatedBy: ",")
    }
    return value(forKey: key).jsonValue as? [String] ?? []
}

值为:

func value(forKey key: RemoteConfigKey) -> RemoteConfigValue {
    RemoteConfig.remoteConfig().configValue(forKey: key.rawValue)
}

问题实际上只出在数组和字符串上。 Int 和布尔值工作得很好(完全相同的方法,只是代替 jsonValue 作为 [String] 使用 .boolValue 或 .numberValue.IntValue 和 .doubleValue.

正在尝试调试一段时间。更新到最新的 firebase SDK,没有任何帮助。

有什么建议吗?

所以我深入挖掘并找到了原因。所以如果有人需要答案并且有同样的问题:

有很多事情需要解决:

  1. Firebase SDK 有问题,已在 8.0 版本中修复,因此必须更新 Firebase sdk
  2. plist文件中使用了错误的quetes,请检查quetes是否正常。
  3. 在设置远程配置设置之前必须调用
  4. FirebaseApp.configure()(在我的例子中是设置,但它是相同的)