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

Posted

技术标签:

【中文标题】在没有应用程序互联网的情况下启动时无法读取本地 Firebase 远程配置 plist【英文标题】:Local Firebase remote config plist can't be read when launching without app internet 【发布时间】:2021-12-29 17:06:24 【问题描述】:

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

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

    文件名 100% 正确。检查了很多次。 检查过的 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 和 booleans 工作得很好(完全相同的方法,只是用 .boolValue 或 .numberValue.IntValue 和 .doubleValue 代替 [String] 的 jsonValue。

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

有什么建议吗?

【问题讨论】:

【参考方案1】:

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

有很多事情需要解决:

    Firebase SDK 存在问题,已在 8.0 版本中修复,因此必须更新 Firebase sdk plist 文件中使用了错误的 quetes,因此只需检查 questes 是否正常即可。 必须在设置远程配置设置之前调用 FirebaseApp.configure()(在我的情况下是使用设置,但仍然是相同的)

【讨论】:

以上是关于在没有应用程序互联网的情况下启动时无法读取本地 Firebase 远程配置 plist的主要内容,如果未能解决你的问题,请参考以下文章

docker上的Spring启动无法从资源中读取属性文件,但可以在没有Docker的情况下使用java -jar

GWT rpc 在本地机器没有互联网连接的情况下无法工作,但在互联网上它可以工作

在没有互联网的情况下从安卓应用程序与 PHP 通信?

如何在没有互联网访问的情况下运行颤振应用程序

如何在没有互联网访问且搜索可用的情况下制作本地 Pypi 镜像?

在没有读取权限的情况下写入文件