检测应用程序的首次运行

5

我正在创建一个应用程序,在其中必须在应用程序首次启动时创建一个plist文件。稍后我将使用这个plist文件来存储用户输入的详细信息。如何检测应用程序的第一次启动?我尝试使用NSUserDefaults进行实验,但我认为我做错了什么。

3个回答

15
你可以使用NSUserDefaults来实现这个功能。但是在版本号方面要小心。
请执行以下操作:
NSString *bundleVersion = [[NSBundle mainBundle] objectForInfoDictionaryKey:(NSString *)kCFBundleVersionKey];

NSString *appFirstStartOfVersionKey = [NSString stringWithFormat:@"first_start_%@", bundleVersion];

NSNumber *alreadyStartedOnVersion = [[NSUserDefaults standardUserDefaults] objectForKey:appFirstStartOfVersionKey];
if(!alreadyStartedOnVersion || [alreadyStartedOnVersion boolValue] == NO) {
    [self firstStartCode];
    [[NSUserDefaults standardUserDefaults] setObject:[NSNumber numberWithBool:YES] forKey:appFirstStartOfVersionKey];
}

选择器firstStartCode仅在每个应用程序版本的第一次运行时调用一次。

好吗?


2

我喜欢使用NSUserDefaults来存储第一次运行的指示。

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];  
if (![defaults objectForKey:@"firstRun"])
  [defaults setObject:[NSDate date] forKey:@"firstRun"];

[[NSUserDefaults standardUserDefaults] synchronize];

随后你可以进行测试...

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];        
if([defaults objectForKey:@"firstRun"])           
{
  // do something or not...
}

参考自:最佳方法:检查iPhone应用程序是否是首次运行


第一个代码块,我应该将其放在AppDelegate的didFinishLaunching方法中吗? - theNoobProgrammer

2
您可以使用以下内容:
-(void) firstLaunch {
    //Code goes here
}

-(void) firstLaunchCheck {
    if(![[NSUserDefaults standardUserDefaults] boolForKey:@"didLaunchFirstTime"]) {
        [[NSUserDefaults standardUserDefaults] setBool:TRUE forKey:@"didLaunchFirstTime"];
        [self firstLaunch];
    }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接