检测应用程序的第一次运行

时间:2011-10-13 18:33:08

标签: iphone ios plist nsuserdefaults

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

3 个答案:

答案 0 :(得分: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。

好?

答案 1 :(得分: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...
}

取自:Best way to check if an iPhone app is running for the first time

答案 2 :(得分:2)

您可以使用以下内容:

-(void) firstLaunch {
    //Code goes here
}

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