Tworzę aplikację, w której muszę utworzyć plik plist, gdy aplikacja uruchamia się po raz pierwszy. Później użyję plist do przechowywania szczegółów, które później użytkownik wprowadza. Jak mogę wykryć pierwsze uruchomienie aplikacji? Eksperymentowałem z NSUserDefaults, ale myślę, że robię coś nie tak.Wykrywanie pierwszego uruchomienia aplikacji
Odpowiedz
Można to zrobić z NSUserDefaults. Ale uważaj z numerem wersji.
Wykonaj następujące czynności:
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 selektor zostanie wywołana tylko raz dla każdej wersji aplikacji na pierwszym biegu.
OK?
Chciałbym użyć NSUserDefaults do przechowywania wskazania pierwszego uruchomienia.
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
if (![defaults objectForKey:@"firstRun"])
[defaults setObject:[NSDate date] forKey:@"firstRun"];
[[NSUserDefaults standardUserDefaults] synchronize];
Następnie można przetestować za to później ...
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
if([defaults objectForKey:@"firstRun"])
{
// do something or not...
}
albumu: Best way to check if an iPhone app is running for the first time
więc pierwszy blok kodu, mogę umieścić go w aplikacji delegata pod didFinishLaunching? – theNoobProgrammer
Tak, to powinno działać. – CamelSlack
można użyć następujących:
-(void) firstLaunch {
//Code goes here
}
-(void) firstLaunchCheck {
if(![[NSUserDefaults standardUserDefaults] boolForKey:@"didLaunchFirstTime"]) {
[[NSUserDefaults standardUserDefaults] setBool:TRUE forKey:@"didLaunchFirstTime"];
[self firstLaunch];
}
}
+1 Tak zawsze to robię. –