Jak wykryć, kiedy aplikacja na iOS jest uruchamiana po raz pierwszy?Wykryj, kiedy aplikacja na iOS jest uruchamiana po raz pierwszy?
Odpowiedz
Prawie co Marc i Chris powiedział, chociaż ja wolę, aby zmienić wartość po zamknięciu aplikacji na wypadek, gdyby było wiele obszarów aplikacji, które muszą o tym wiedzieć. W kodzie:
// -applicationDidFinishLaunching:
[[NSUserDefaults standardUserDefaults] registerDefaults:[NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithBool:YES],@"firstLaunch",nil]];
// to check it:
[[NSUserDefaults standardUserDefaults] boolForKey:@"firstLaunch"];
// -applicationWillTerminate:
[[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"firstLaunch"];
Możesz ustawić wartość logiczną w domyślnych ustawieniach użytkownika, aby to zrobić. Ustaw klucz na wartość false, gdy zadzwonisz pod numer registerDefaults:
, a następnie ustaw go na true, zmieniając wartość na true po wyświetleniu ekranu początkowej pomocy lub cokolwiek innego, co musisz zrobić.
Jeśli masz stały plik danych, który jest zawsze zapisywany po zamknięciu aplikacji, sprawdzenie, czy istnieje, byłoby inne.
zapisać jako user preference np had_first_launch, ustawiony na true przy starcie, to będzie tylko na fałszywe po raz pierwszy ...
normalnie używam numer wersji aplikacji zamiast logiczną dla wartości firstLaunch w domyślnych użytkowników. W ten sposób można rozróżnić pierwsze uruchomienie nowej instalacji i pierwsze uruchomienie aktualizacji. Może być przydatna w przyszłych wersjach ...
Zdaję sobie sprawę, że to pytanie jest dość stare, ale użyłem go, aby wymyślić jeden sposób wykrywania pierwszego uruchomienia po "świeżej instalacji" (w porównaniu do pierwszego uruchomienia po uaktualnienie/obniżenie wersji) i pomyślałem, że udostępnię kod tutaj przyszłym widzom, na wypadek, gdyby był pomocny.
// Get current version ("Bundle Version") from the default Info.plist file
NSString *currentVersion = (NSString*)[[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleVersion"];
NSArray *prevStartupVersions = [[NSUserDefaults standardUserDefaults] arrayForKey:@"prevStartupVersions"];
if (prevStartupVersions == nil)
{
// Starting up for first time with NO pre-existing installs (e.g., fresh
// install of some version)
[self firstStartAfterFreshInstall];
[[NSUserDefaults standardUserDefaults] setObject:[NSArray arrayWithObject:currentVersion] forKey:@"prevStartupVersions"];
}
else
{
if (![prevStartupVersions containsObject:currentVersion])
{
// Starting up for first time with this version of the app. This
// means a different version of the app was alread installed once
// and started.
[self firstStartAfterUpgradeDowngrade];
NSMutableArray *updatedPrevStartVersions = [NSMutableArray arrayWithArray:prevStartupVersions];
[updatedPrevStartVersions addObject:currentVersion];
[[NSUserDefaults standardUserDefaults] setObject:updatedPrevStartVersions forKey:@"prevStartupVersions"];
}
}
// Save changes to disk
[[NSUserDefaults standardUserDefaults] synchronize];
im zawsze używam tego kodu "sprawdź pierwszy start", więc jest to świetny dodatek! dzięki za pracę Clint! – nickthedude
Nigdy nie myślałem o wykryciu ulepszeń i obniżek. +1. – JoePasq
To naprawdę dobry sposób na śledzenie wersji. – Ansari
To nie będzie działać poprawnie, jeśli chcesz wykryć w innych miejscach kodu, jeśli jest to pierwsze uruchomienie. "ApplicationWillTerminate" nie będzie działać z iOS 4.0 z powodu wielozadaniowości. ten link zapewnia dobre rozwiązanie: http://mobiledevblog.metalcompass.com/?p=43
To jest naprawdę prosty skrót, ale uważam, że pary wartość klucza NSUserDefault zawsze NULL podczas pierwszego uruchomienia aplikacji, więc
// Check to see if its the first time
if ([[NSUserDefaults standardUserDefaults] valueForKey:@"firstTime"] == NULL) {
[[NSUserDefaults standardUserDefaults] setValue:@"Not" forKey:@"firstTime"];
}
i umieść ten kod w awakeFromNib kontrolera widoku, który pojawia się po uruchomieniu aplikacji. Nie wiem, czy jakakolwiek inna odpowiedź działa dla twojego problemu, ale w ten sposób ją rozwiązałem.
- 1. Wykryj użytkownika po raz pierwszy w aplikacji java
- 2. Określanie, kiedy aplikacja Windows 8 jest uruchamiana przez powiadomienie
- 3. Najlepszy sposób sprawdzenia, czy aplikacja iPhone działa po raz pierwszy
- 4. Nauka Oracle po raz pierwszy
- 5. Po raz pierwszy przewodnik po bibliotece Androida
- 6. Plik wykonywalny, z którego uruchamiana jest aplikacja?
- 7. Jak przypisać wartość tylko po raz pierwszy
- 8. Jak wyłączyć funkcję pulltorefresh po raz pierwszy?
- 9. Wykryj, kiedy aplikacja konsolowa się zamyka/zabija?
- 10. Używanie readlines w pythonie? Po raz pierwszy
- 11. Współdzielone preferencje zostały zapisane po raz pierwszy
- 12. Tworzenie JavaScript API po raz pierwszy
- 13. Sprawdź, czy moja aplikacja IOS jest zaktualizowana
- 14. Wywołanie didReceiveRemoteNotification po uruchomieniu aplikacji po raz pierwszy
- 15. błąd podczas uruchamiania cpan po raz pierwszy
- 16. Próbujesz uruchomić KIVY, po raz pierwszy
- 17. Problemy z używaniem PDO po raz pierwszy
- 18. Jak ustawić ciszę po zapisaniu modelu po raz pierwszy
- 19. Fasola nie jest wywoływanaPrepareOptionsMenu() podczas otwierania menu po raz pierwszy
- 20. fab.show() nie animowane po raz pierwszy po zainicjowaniu nowej aktywności
- 21. Dowiedz się, kiedy po raz pierwszy otworzyłeś aplikację po aktualizacji do nowszej wersji
- 22. Warunki, kiedy didFinishLaunchingWithOpcje były wywoływane przez IOS
- 23. Jakie zdarzenie występuje natychmiast po wyświetleniu kontrolki po raz pierwszy?
- 24. Usługa ScheduledExecutorService jest uruchamiana tylko raz wewnątrz usługi
- 25. Apple Watch - powolna animacja obrazu po raz pierwszy
- 26. clientaccesspolicy.xml nie zwróciła się po raz pierwszy w niektórych przeglądarkach
- 27. Tworzenie pierwszego ekranu użytkownika po raz pierwszy dla mojej aplikacji
- 28. Dokonywanie czynności pojawiają się tylko raz, gdy aplikacja jest uruchomiona
- 29. Wykryj tryb samolotowy na iOS
- 30. Funkcja iOS może być wywołana tylko raz (po zainicjowaniu aplikacji)
Czy wpisy w bazie danych ustawień domyślnych powiązane z aplikacją są usuwane po odinstalowaniu aplikacji? – xyzzycoder
@xyzzycoder: yes –
Z dostępnym tłem, '-applicationWillTerminate:' zwykle nie jest wywoływane, gdy użytkownik opuszcza aplikację. Zamiast tego jest wywoływane '-applicationWillResignActive'. Tak więc firstLaunch należy ustawić w obu tych metodach. – memmons