我遇到的情况似乎没有解决方案。这里是: 我在App Store上有一个应用程序。我没有为这个应用程序编写任何代码来记住升级方案。对于我能想象到的一切,除了我已经拥有的应用程序商店之外,我绝不会发布更多版本。现在,情况是我需要升级我的应用程序,并且在新代码中,我要确定它是否是最新版本的新安装,或者是否是旧版本的升级。我不知道如何解决这个问题,因为我没有为升级编写适当的第一个版本?有人愿意开导我。
答案 0 :(得分:1)
在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
答案 1 :(得分:0)
我不确定,但我认为这会对你有帮助。
NSString *version = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"];
将为您提供该应用的当前版本。我想你可以用它来检查你的升级。