В 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