Различают ли обновление приложения iPhone и новую установку приложения? - PullRequest
0 голосов
/ 01 апреля 2011

Есть ситуация, с которой я сталкиваюсь, и похоже, что она не имеет решения.Вот оно: у меня есть приложение в App Store.Я не написал ни одного кода для этого приложения, помня сценарий обновления.Насколько я мог себе представить, я никогда не выпускал больше версий, кроме той, что уже есть в магазине приложений.Теперь ситуация такова, что мне необходимо обновить мое приложение, и в новом коде я должен определить, является ли это новой установкой последней версии или обновлением более старой версии.Я не знаю, как к этому подойти, так как я не кодировал свою первую версию соответствующим образом для обновлений?Любой, кто хочет просветить меня.

Ответы [ 2 ]

1 голос
/ 01 апреля 2011

В appDidFinishLaunching добавьте немного кода, чтобы сохранить пользовательские настройки по умолчанию (они синхронизируются с iTunes вместе с приложением и выполняются в промежутке между установками), если его еще нет (первый запуск и новая установка). Также сохраните, какая это версия. Затем, если это была не новая установка, проверьте, является ли последняя сохраненная версия номером текущей версии приложения. Если номер версии приложения больше, это обновление, и теперь вам нужно сохранить его как последнюю версию установщика. Иначе это просто открытие приложения.

Примерно так (код не проверен)

    if (![[NSUserDefaults standardUserDefaults] boolForKey:@"alreadyInstalled"]) {
        [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"alreadyInstalled"];
        [[NSUserDefaults standardUserDefaults] setFloat:[[[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"] floatValue] forKey:@"lastVersionInstalled"];
        //.... contact server or something to say it's a fresh install
    }
    else if ([[NSUserDefaults standardUserDefaults] floatForKey:@"lastVersionInstalled"] < [[[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"] floatValue]){
        [[NSUserDefaults standardUserDefaults] setFloat:[[[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"] floatValue] forKey:@"lastVersionInstalled"];
        //The user has just upgraded
    }
    else {
        //It's neither. The app has just been opened again.
    }

Хотя вы не сможете сказать, например, что пользователь удалил его, затем перезагружал или устанавливает на другое устройство. Для более подробной информации вы, вероятно, будете использовать что-то вроде аналитики Flurry. http://www.flurry.com/product/analytics/index.html

0 голосов
/ 01 апреля 2011

Я не уверен, но я думаю, что это поможет вам.

NSString *version = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"];

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...