Правила сравнения версий пакетов iOS App Store

Мы собираемся загрузить новую версию нашего приложения в iOS App Store.

Для предыдущей версии CFBundleShortVersionString было «1.9.2», а CFBundleVersion — «1.92.0». Для текущей версии мы будем использовать CFBundleShortVersionString:"1.10" и CFBundleVersion:"1.100.0".

Но мы боимся, что App Store не определит нашу версию 1.10 как новую. Не будет ли она распознаваться как более старая, чем предыдущая версия с CFBundleVersion: "1.92.0".

Другими словами, будет ли CFBundleVersion:"1.100.0" выше, чем CFBundleVersion:"1.92.0" ?

Кто-нибудь знает, как Apple сравнивает параметр CFBundleVersion загруженных сборок?

Спасибо за ответы.


person Sergei    schedule 10.12.2014    source источник


Ответы (1)


Да, 1.100.0 > 1.92.0. Apple использует семантическое управление версиями.

Слева направо, пока ни одно из чисел не меньше нового числа, все в порядке.

В вашем примере проверка идет примерно так (псевдо):

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
person Dan VanWinkle    schedule 10.12.2014
comment
Спасибо, Дэн. Мы постараемся использовать 1.100.0 для новой версии. - person Sergei; 11.12.2014
comment
@ Сергей, не могли бы вы принять этот ответ, если он для вас приемлем? - person Dan VanWinkle; 11.12.2014
comment
конечно, мы попробуем загрузить версию, и если это сработает, я приму этот ответ. Потому что недавно, когда мы загрузили сборку с CFBundleVersion:1.8 выше сборки с CFBundleVersion:1.7.3, App Store не распознал 1.8 как новую сборку, и нам пришлось загрузить новую сборку с CFBundleVersion:1.80.1, чтобы исправить это. Спасибо. - person Sergei; 12.12.2014
comment
Это действительно странно, что Apple не признала это новой сборкой. Был ли обновлен новый номер сборки? Apple также требует, чтобы номер сборки был расширен, поэтому убедитесь, что вы также указали его. - person Dan VanWinkle; 12.12.2014
comment
Да, номер сборки тоже обновился, CFBundleShortVersionString имел значение 1.8. Но в любом случае Apple почему-то не признала эту сборку новой версией. Вот почему теперь нам интересно, будет ли сборка с CFBundleVersion:1.100.0 выше, чем сборка с CFBundleVersion:1.92.0. Напишу сюда, когда зальем новый билд и увидим результат. - person Sergei; 15.12.2014