iOS - FireBase RemoteConfig по умолчанию проблема с списком - PullRequest
0 голосов
/ 06 ноября 2018

Итак, я получаю строку из базы огня, которая выглядит так:

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

но проблема в том, что это словарь. Любой совет, как решить эту проблему?

...