iOS应用商店Bundle版本比较规则

3
我们将上传我们的应用的新版本到iOS App Store。
之前版本的< strong>CFBundleShortVersionString 是“1.9.2”,而< strong>CFBundleVersion 是“1.92.0”。对于当前版本,我们将使用< strong>CFBundleShortVersionString :“1.10”和< strong>CFBundleVersion :“1.100.0”。
但我们担心App Store不会将我们的1.10版本检测为新版本。它是否会被认为比具有CFBundleVersion:“1.92.0”的先前版本旧?
换句话说,< strong>CFBundleVersion :“1.100.0”是否比< strong>CFBundleVersion :“1.92.0”高?
有人知道苹果如何比较上传构建的< strong>CFBundleVersion 参数吗?
感谢您的回答。
1个回答

3

是的,1.100.0比1.92.0更高。苹果使用语义化版本控制。

从左到右,只要没有数字小于新数字,你就没问题。

对于您的示例,检查大致如下(伪代码):

var oldVersionSems = "1.92.0".split(".")
var newVersionSems = "1.100.0".split(".")
var maxIndex = MIN(oldVersionSems.length, newVersionSems.length)
var isNewer = false
for (int i = 0; i < maxIndex, i++) {
    isNewer = newVersionSems[i] > oldVersionSems[i].toInt()
    if (isNewer) break
}

一个关于语义化版本控制的好资源是http://semver.org 示例:
  • 2.0.0 大于 1.100.0
  • 1.20.0 小于 1.100.0
  • 1.1.0 大于 1.0.500
  • 1.92.0 小于 1.100.0

谢谢,丹。我们将尝试在新版本中使用 "1.100.0"。 - Sergei
@Sergei,如果您认为这个答案可接受,请您接受一下好吗? - Dan VanWinkle
当然,我们会尝试上传新版本,如果成功的话,我会接受这个答案。最近我们上传了一个 CFBundleVersion 为“1.8”的构建版本,但 App Store 没有将其识别为新版本,因此我们不得不上传一个 CFBundleVersion 为“1.80.1”的新版本来解决这个问题。谢谢。 - Sergei
苹果竟然没有将其识别为一个新的构建,这真是太奇怪了。新的构建号码也更新了吗?苹果还要求构建号码要有所提升,所以请确保您也已经进行了提升。 - Dan VanWinkle
是的,版本号也已更新,CFBundleShortVersionString 的值为 "1.8"。但出于某种原因,苹果没有将此构建识别为新版本。这就是为什么现在我们想知道带有 CFBundleVersion:"1.100.0" 的构建是否比带有 CFBundleVersion:"1.92.0" 的构建更高的原因。当我们上传新构建并查看结果时,我会在这里写下来。 - Sergei

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接