iOS-Firebase remoteConfig默认plist问题

时间:2018-11-06 15:17:44

标签: ios swift firebase plist firebase-remote-config

所以我从火力基地得到了一个字符串,如下所示:

{
  "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” plist,但是我无法在此处设置默认值,因此plist如下所示:

<?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>

但是问题在于这是一本字典。 有什么建议可以解决这个问题吗?

0 个答案:

没有答案