Итак, я получаю строку из базы огня, которая выглядит так:
{
"1.0.3": {
"updateTime": "13/7/2018",
"iOSMinVersionForceUpdate": "1.0.3",
"iOSMinVersionMessageUpdate": "1.0.4",
"iOSMinFirmwareVersion": "1.0.1",
"privacyPolicyUrlFireBase": "https://www.name.com/corporate/privacy-policy",
"termOfUseUrlFireBase": "https://www.name.com/corporate/terms-of-use"
},
"1.0.4": {
"updateTime": "17/10/2018",
"iOSMinVersionForceUpdate": "1.0.2",
"iOSMinVersionMessageUpdate": "1.0.2",
"iOSMinFirmwareVersion": "1.0.1",
"privacyPolicyUrlFireBase": "https://www.name.com/corporate/privacy-policy",
"termOfUseUrlFireBase": "https://www.name.com/corporate/terms-of-use"
}
}
Из этого JSON я строю объект:
struct FireBaseConfiguration: Codable {
var updateTime: String = ""
var iOSMinVersionForceUpdate: String = ""
var iOSMinVersionMessageUpdate: String = ""
var iOSMinFirmwareVersion: String = ""
var privacyPolicyUrlFireBase: String = ""
var termOfUseUrlFireBase: String = ""
}
Это функция:
func isNeedToUpdate(success: @escaping (AppState) -> Void, failure: @escaping () -> Void) {
FirebaseApp.configure()
remoteConfigSetUp()
configVersionMap = self.remoteConfig?["iOSConfigVersionMap"].stringValue
print("value is :\(String(describing: configVersionMap ))")
var expirationDuration = 3600
if (self.remoteConfig?.configSettings.isDeveloperModeEnabled)! {
expirationDuration = 0
}
self.remoteConfig?.fetch(withExpirationDuration: TimeInterval(expirationDuration), completionHandler: { [unowned self] (status, error) in
if status == .success {
self.remoteConfig?.activateFetched()
guard let configVersionMap = self.remoteConfig?.configValue(forKey: "iOSConfigVersionMap").stringValue else { return }
if let configModel = self.parser.fireBaseConfigVersionMapParser(dataString: configVersionMap, version: self.getCurrentAppVersion()!) {
print(configModel)
if let state = self.checkIfAppState(forceUpdate: configModel.iOSMinVersionForceUpdate, messageUpdate: configModel.iOSMinVersionMessageUpdate) {
success(state)
} else {
failure()
}
}
} else {
print("Config not fetched")
print("Error: \(error?.localizedDescription ?? "No error available.")")
failure()
}
})
}
И вот где настраивается удаленный конфиг:
func remoteConfigSetUp() {
// TODO - change config in production
self.remoteConfig = RemoteConfig.remoteConfig()
self.remoteConfig?.configSettings = RemoteConfigSettings(developerModeEnabled: true)
self.remoteConfig?.setDefaults(fromPlist: "FireBase")
}
Как вы можете видеть, мой список по умолчанию - "FireBase", но я не могу установить значения по умолчанию, список выглядит следующим образом:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>iOSConfigVersionMap</key>
<dict>
<key>iOSMinFirmwareVersion</key>
<string></string>
<key>privacyPolicyUrlFireBase</key>
<string>https://www.name.com/corporate/privacy-policy/</string>
<key>termOfUseUrlFireBase</key>
<string>https://www.name.com/corporate/terms-of-use/</string>
<key>updateTime</key>
<string></string>
<key>iOSMinVersionForceUpdate</key>
<string>2.0.0</string>
<key>iOSMinVersionMessageUpdate</key>
<string></string>
</dict>
но проблема в том, что это словарь.
Любой совет, как решить эту проблему?