2011-10-13 126 views
5

我正在創建一個應用程序,我必須在應用程序第一次啓動時創建plist。我稍後將使用plist來存儲用戶稍後輸入的詳細信息。我如何檢測應用的首次發佈?我正在試驗NSUserDefaults,但我認爲我做錯了什麼。檢測應用程序的第一次運行

回答

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只能在時間上的第一個運行的每個應用程序版本被調用。

好嗎?

+0

+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

+0

這樣的一個代碼塊,我該把它放在應用程序委託didFinishLaunching下? – theNoobProgrammer

+0

是的,應該工作。 – CamelSlack

2

您可以使用以下方法:

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

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