2011-10-13 33 views
5

Tôi đang tạo một ứng dụng mà trong đó tôi phải tạo một plist khi ứng dụng khởi chạy lần đầu tiên. Sau đó tôi sẽ sử dụng plist để lưu trữ chi tiết người dùng sau đó nhập vào. Làm thế nào tôi có thể phát hiện ra mắt đầu tiên của ứng dụng? Tôi đã thử nghiệm với NSUserDefaults nhưng tôi nghĩ rằng tôi đang làm điều gì đó sai trái.Phát hiện lần chạy đầu tiên của ứng dụng

Trả lời

15

Bạn có thể làm điều này với NSUserDefaults. Nhưng hãy cẩn thận với số phiên bản.

Làm như sau:

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]; 
} 

các firstStartCode selector sẽ chỉ được gọi đúng thời hạn cho mỗi phiên bản ứng dụng trên chạy đầu tiên.

OK?

+0

+1 Đó là cách tôi luôn làm. –

2

Tôi thích sử dụng NSUserDefaults để lưu trữ chỉ báo lần chạy đầu tiên.

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

[[NSUserDefaults standardUserDefaults] synchronize]; 

Sau đó bạn có thể kiểm tra cho nó sau này ...

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

Trích từ: Best way to check if an iPhone app is running for the first time

+0

nên khối đầu tiên của mã, để tôi đặt nó trong các đại biểu ứng dụng dưới didFinishLaunching? – theNoobProgrammer

+0

Có điều đó sẽ hoạt động. – CamelSlack

2

Bạn có thể sử dụng như sau:

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

-(void) firstLaunchCheck { 
    if(![[NSUserDefaults standardUserDefaults] boolForKey:@"didLaunchFirstTime"]) { 
     [[NSUserDefaults standardUserDefaults] setBool:TRUE forKey:@"didLaunchFirstTime"]; 
     [self firstLaunch]; 
    } 
} 
Các vấn đề liên quan