Вы не публикуете обновления, вы выпускаете новые версии. Если кто-то обновляется с 1.0 до 1.2 и пропускает 1.1, то это именно то, что происходит. 1.1 никогда не будет установлен или выполнен.
EDIT:
Вот предложение по очень простому способу управления обновлениями. Наверное, не самый элегантный, но он работает.
NSString *lastVersion = [[NSUserDefaults standardUserDefaults]
stringForKey:@"LastVersion"];
NSString *currentVersion = [[NSBundle mainBundle]
objectForInfoDictionaryKey:@"CFBundleShortVersionString"];
if ([self version:lastVersion isSmallerThanVersion:@"1.1"]) {
// update from 1.0 to 1.1 here.
}
if ([self version:lastVersion isSmallerThanVersion:@"1.2"]) {
// update from 1.1 to 1.2 here.
}
if ([self version:lastVersion isSmallerThanVersion:@"1.3"]) {
// update from 1.2 to 1.3 here.
}
[[NSUserDefaults standardUserDefaults]
setObject:currentVersion forKey:@"LastVersion"];
В этом примере вы имели 4 версии (1.0, 1.1, 1.2, 1.3) и 1.3 является новейшим выпуск.
Вы запускаете это при каждом запуске приложения. Поскольку обновление приложения также завершает его, вы можете предположить, что это будет запущено после возможного обновления.
В основном вы загружаете последнюю версию, которую пользователь использовал на этом устройстве, по умолчанию пользователя. Если приложение запускается впервые, не будет известных ранее версий, ни одна из процедур обновления не будет выполнена, а текущая версия (1.3) будет сохранена в качестве последней используемой версии.
Если приложение использовалось с предыдущей версией (1.2), то lastVersion
будет 1.2
и выполнен только последний блок if
.
Если приложение использовалось с версией 1.1, но пропустило 1.2 и теперь обновлено до 1.3, lastVersion
будет равно 1.1, а два последних блока if
будут выполняться последовательно. Поэтому сначала вы обновляете свои данные с 1,1 до 1,2, а затем от 1,2 до 1,3.
Спасибо - так версия 500 10 лет теперь предположить, что пользователь может быть обновление с любой версии 1..499, и обрабатывать все известные ядра состояния данных, существовавшие за это время? –
В значительной степени, да. Но это не так сложно. Для каждой новой версии вам нужно всего лишь выполнить одну процедуру обновления. См. Редактирование. – DrummerB