Обнаружение первого запуска приложения с предыдущими версиями

Я хотел бы обновить приложение, чтобы добавить тур при первом запуске. Я бы обычно справлялся с этим NSUserDefaults ключ. Тем не менее, уже существуют существующие версии приложения, уже выпущенные.

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

4 ответа

Вы можете проверить версию приложения через веб-сервис. и предупредить пользователей, чтобы обновить приложение. И в этом случае требуется подключение к интернету.

При запуске проверьте наличие файла / постоянного параметра с именем, уникальным для текущей запущенной версии. Если его там нет, покажите тур, затем коснитесь файла / создайте постоянную настройку.

Наилучший подход, который я могу определить до сих пор, - это сначала выпустить версию без тура, но она записывает какой-то флаг NSUserDefaults. Тогда я могу надеяться, что большинство существующих пользователей обновят и будут использовать приложение, прежде чем я запустите второе обновление, включая тур.

Я могу объединить это с предложением @rmaddy, чтобы найти любые другие ранее существующие настройки, которые могли быть написаны для увеличения моего покрытия.

Это явно далеко от идеала.

Самый простой способ - сохранить текущую версию, используя NSUserDefaults:

if (![[NSUserDefaults standardUserDefaults] objectForKey:@"app_version"] || [[[NSUserDefaults standardUserDefaults] objectForKey:@"app_version"] integerValue] < [[[NSBundle mainBundle] objectForInfoDictionaryKey: @"CFBundleVersion"] integerValue]) {
    // new version detected!
    [[NSUserDefaults standardUserDefaults] setObject:[[NSBundle mainBundle] objectForInfoDictionaryKey: @"CFBundleVersion"] forKey:@"app_vervion"];
}

РЕДАКТИРОВАТЬ Добавлена ​​проверка существования пользователя по умолчанию для первого обновления, содержащего эту функцию.

РЕДАКТИРОВАТЬ II Теперь я понял, что вы действительно хотите. Вам понадобится почти тот же код, который я написал:

if (![[NSUserDefaults standardDefaults] boolForKey:@"tour_done"]) {
    // present tour and that call:
    // [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"tour_done"];
    // [[NSUserDefaults standardUserDefaults] synchronize];
}
Другие вопросы по тегам