对于是否为首次安装的App可以使用如下方法来判断
NSUserDefaults standardUserDefaults 可以使APP记录相关数据,以下代码是将firstLaunch为键,布尔值为值,对应记录
[[NSUserDefaults standardUserDefaults] boolForKey:@"firstLaunch"];
如果App是通过App Store升级的话可以通过版本号来判断
原理同上
[[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"];
实际需要运行时运行以下代码
if(![[NSUserDefaults standardUserDefaults] boolForKey:@"firstLaunch"]) {
[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"firstLaunch"];
NSLog(@"安装之后首次开启App");
//获取当前App版本号并存入NSUserDefaults中
NSString* appVersion = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"];
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
[userDefaults setObject:appVersion forKey:@"appVersion"];
[userDefaults synchronize];
}
else {
//根据版本号判断是否更新后首次启动
NSString* appVersion = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"];
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
NSString* localVersion = [userDefaults stringForKey:@"appVersion"];
if ([appVersion isEqualToString:localVersion]) {
NSLog(@"安装或升级之后并非首次开启App");
}
else {
NSLog(@"升级之后首次开启App");
//将当前App版本号存入NSUserDefaults中
[userDefaults setObject:appVersion forKey:@"appVersion"];
[userDefaults synchronize];
}
}
可以将上述代码放置在didFinishLaunchingWithOptions:(AppDelegate文件中)程序运行时会先运行这个文件。也可以放到需要使用到的代码块中
参考播客:博主:Dino.Tang