有没有办法知道iOS应用程序在更新后启动了?
我想我每次在NSUserDefaults
启动应用程序时都可以保存应用当前版本,并在每次打开应用程序时检查此版本。
情况如何:
1)用户安装应用版本1.0,但不启动它。
2)用户安装应用版本2.0。
例如如何处理这种情况?
提前致谢。
答案 0 :(得分:2)
如果始终按照您的建议完成,请将应用版本保存在NSUserDefaults
。
关于你的另一种情况,如果应用程序没有从版本1开始,那么它与版本2一样,你可以将其视为新安装。
由于您的应用从未在第一时间开始,因此您可以将其视为全新安装。如果您这样做是为了跟踪某种分析工具中的更新,那么您将遇到问题。但您可以使用Apple安装/更新报告来获取正确的安装/更新列表。
请确保如果您从任何版本进行任何更新,那么您就可以通过以下方式进行编码,即可以从任何以前的版本升级。因此,从1开始安装版本4将对版本2和版本3进行任何和所有更改。
答案 1 :(得分:2)
我在Apple的this website发现了以下注释。
当用户下载应用更新时,iTunes会将更新安装在新的应用目录中。然后,在删除旧安装之前,它会将用户的数据文件从旧安装移动到新的app目录。保证在更新过程中保留以下目录中的文件:
- /文件
- /库
虽然其他用户目录中的文件也可能被移动,但您不应该在更新后依赖它们。
在您发布的每个版本中,您可以在其中一个更新持久目录中放置一个具有唯一名称(每个版本都是唯一的)的txt文件,并在首次启动应用程序时检查以前版本的txt文件。即使在下载和初始更新之间未启动应用程序的情况下,这也应该有效。
答案 2 :(得分:1)
每次启动应用程序时,启动过程完成后都会调用appDelegate类中的以下函数:
- (BOOL)application:(UIApplication *)application
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
这一点你可以检查应用程序的版本,可能使用somoething,如:
[[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"]
答案 3 :(得分:0)
我认为这可能很有用:MTMigration管理需要在iOS应用中的版本更新上运行一次的代码块。这可以是数据规范化例程,“此版本中的新功能”屏幕或错误修复。
可通过CocoaPods获取:pod'MTMigration'
请查看GitHub(https://github.com/mysterioustrousers/MTMigration)的MTMigration存储库以了解用法和示例。
[MTMigration applicationUpdateBlock:^{
/* This code run on every version change. */
}];
[MTMigration migrateToVersion:@"1.0" block:^{
/* This code only run once in version 1.0 */
}];
[MTMigration migrateToVersion:@"2.0" block:^{
/* This code only run once in version 2.0 */
}];
如果用户的版本为1.0,跳过2.0,并升级到3.0,那么1.0和2.0版块都会运行。
答案 4 :(得分:0)
我参加派对有点晚了,但如果这还是个问题,我会使用保存的布尔值来查看这是应用的首次发布:
if (![[NSUserDefaults standardUserDefaults] boolForKey:@"HasLaunchedOnce"]) {
NSLog(@"First launch");
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setBool:YES forKey:@"HasLaunchedOnce"];
[defaults synchronize];
}
我可以处理您在问题中已经提到的安装或更新。