如何检查应用程序是否第一次启动?

dhr*_*hrm 0 cocoa-touch objective-c

我正在开发一个新版本的应用程序.在旧版本的应用程序中,某些内容已从Web下载到Cache-folder中.此内容在新版本中不再有效,因此我希望在新版本的应用程序启动时首次删除其中一些文件.

如何检查应用程序是否第一次启动?我可以使用NSUserDefaults存储指示,但是有更好的方法吗?

nim*_*sai 5

我所做的是检查应用程序是否第一次在didFinishLaunchingWithOptions:方法中启动,并将应用程序的当前版本存储在默认值中.这样做的原因是每次更新应用程序时,我都可以跟踪需要删除哪些文件,以及需要为该版本的应用程序存储哪些文件.以下是代码:

if (![[NSUserDefaults standardUserDefaults] boolForKey:kNOT_FIRST_LAUNCH]) {
    NSLog(@"fresh install = %d", (int)[self checkForFreshInstall]);
    [[NSUserDefaults standardUserDefaults] setBool:YES forKey:kAPPLICATION_LAUNCHING_FIRST_TIME];
    [[NSUserDefaults standardUserDefaults] synchronize];
} else {
    [[NSUserDefaults standardUserDefaults] setBool:NO forKey:kAPPLICATION_LAUNCHING_FIRST_TIME];
    [[NSUserDefaults standardUserDefaults] synchronize];
}
Run Code Online (Sandbox Code Playgroud)

这是checkForFreshIntallMethod:

- (BOOL) checkForFreshInstall {
NSString *currentVersion = (NSString*)[[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleVersion"];
NSString *prevVersion = (NSString *)[[NSUserDefaults standardUserDefaults] valueForKey:@"prevVersion"];

if (prevVersion == nil) {
    // Starting up for first time with NO pre-existing installs (e.g., fresh 
    // install of some version)
    [[NSUserDefaults standardUserDefaults] setValue:currentVersion forKey:@"prevVersion"];
    // Save changes to disk
    [[NSUserDefaults standardUserDefaults] synchronize];
    return YES;
}
else if ([prevVersion intValue] < [currentVersion intValue]) {
    // Starting up for first time with this version of the app. This
    // means a different version of the app was alread installed once 
    // and started.
    [[NSUserDefaults standardUserDefaults] setValue:currentVersion forKey:@"prevVersion"];
    // Save changes to disk
    [[NSUserDefaults standardUserDefaults] synchronize];
    return NO;
}
return YES;
Run Code Online (Sandbox Code Playgroud)

}

如果您有任何疑问,请告诉我.