【发布时间】:2018-08-07 07:54:54
【问题描述】:
我们通过CFBundleShortVersionString 将应用程序的当前版本与我们后端的版本进行比较,以确定我们是否要强制用户更新。出于某种原因,在发布新版本的前 24 小时内,CFBundleShortVersionString 返回了错误的版本。到目前为止,我们已经尝试了多种解决方案,但似乎都没有奏效。以下是我们用来比较的简化版本:
func needToUpdate(completion: @escaping (Bool) -> Void) {
guard let currentVersion = Foundation.Bundle.main.infoDictionary?["CFBundleShortVersionString"] as? String,
let currentVersionInt = Int(currentVersion.replacingOccurrences(of: ".", with: ""))
else { completion(false); return }
let versionInt = Int((versionObject.version ?? "0").replacingOccurrences(of: ".", with: "")) ?? 0
completion(currentVersionInt < versionInt)
}
此外,此问题仅在应用发布到应用商店后才会发生,因此我们无法在 xcode 中对其进行调试。我们已尝试在午夜发布更新,但早上用户仍然打电话说他们已经更新了应用程序,但弹出窗口仍然出现。知道是什么原因造成的吗?
【问题讨论】:
-
versionObject.value的值是多少? -
我希望没有像 1.0.0 这样的多个小数
-
versionObject.version等于最新的应用程序版本,例如。 “1.10.2” -
我还看到 CFBundleShortVersionString 似乎返回错误值的日志。你有没有对此得出任何结论?