Jak mogę wykryć pierwsze uruchomienie
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
// if very first launch than perform actionA
// else perform actionB
}
metoda?
ios
iphone
launch
launching-application
Shishir.bobby
źródło
źródło
Odpowiedzi:
źródło
BOOL
. 2. Wtedy błąd jest w twoim kodzie ... jeśli zwrócenie 0 powoduje awarię, to coś jest strasznie nie tak - gdzie indziej.NSUserDefaults
jest powszechne miejsce? co się stanie, jeśli inna aplikacja używa tego samego „klucza”, którego ja używam?W Swift 3, 4 spróbuj tego:
W Swift 2 spróbuj tego,
AKTUALIZACJA: - W przypadku OBJ-C używam tego,
Odniesienie do OBJ-C: https://stackoverflow.com/a/9964400/3411787
źródło
Właśnie w tym celu napisałem małą bibliotekę. Daje mi znać, czy jest to pierwsze uruchomienie w historii, czy tylko dla tej wersji i wszelkich wcześniejszych wersji zainstalowanych przez użytkownika. Jest dostępny na github jako cocoapod na licencji Apache 2: GBVersionTracking
Po prostu zadzwoń
application:didFinishLaunching:withOptions:
A następnie, aby sprawdzić, czy to pierwsze uruchomienie, po prostu wywołaj to w dowolnym miejscu:
I podobnie:
źródło
dla Swift 3.0 - Swift 5
Dodaj rozszerzenie
następnie w swoim kodzie
źródło
Innym pomysłem na Xcode 7 i Swift 2.0 jest użycie rozszerzeń
Teraz możesz pisać w dowolnym miejscu w swojej aplikacji
Osobiście wolę takie rozszerzenie UIApplication:
Ponieważ wywołanie funkcji jest bardziej opisowe:
źródło
Możesz to zaimplementować za pomocą metody statycznej poniżej:
źródło
Musisz coś zapisać podczas uruchamiania, a następnie sprawdzić, czy istnieje. Jeśli nie, to pierwszy raz. „Coś” może być plikiem, wpisem w bazie danych, ustawieniem domyślnym użytkownika ....
źródło
Jest to dość proste i wymaga tylko sześciu wierszy kodu.
Przydatne będzie dodanie tego kodu w preferencjach uruchamiania aplikacji lub w dowolnym innym miejscu, w którym może być konieczne sprawdzenie, czy jest to pierwsze uruchomienie aplikacji.
PS NIE używaj znaków bools w preferencjach Po prostu trzymaj się liczb całkowitych. Domyślnie mają wartość zero, gdy są niezdefiniowane.
Ponadto
[theDefaults synchronize];
linia nie jest wymagana, ale odkryłem, że gdy aplikacja jest uruchamiana setki razy na setkach urządzeń, wyniki nie zawsze są wiarygodne, poza tym jest to lepsza praktyka.źródło
zapisz klucz bool w NSUserDefaults za pierwszym razem, gdy będzie to nie, zmienisz go na tak i zachowasz go tak, aż aplikacja usunie lub ponownie zainstaluje ją ponownie za pierwszym razem.
źródło
Szybka i łatwa funkcja
źródło
Dla Swift 2.0 w Xcode 7. W pliku AppDelegate.swift:
źródło
Zarejestruj wartości domyślne podczas uruchamiania aplikacji:
Wyczyść wartość po zamknięciu aplikacji:
Wartość czeku:
źródło
W szybkim tempie sugerowałbym użycie stałej globalnej, którą można bardzo łatwo wykonać poza jakimkolwiek zakresem, na przykład powyżej delegata aplikacji. W związku z tym będzie ustawiona właściwa wartość, dopóki aplikacja nie zostanie zakończona. nadal będzie zwracać tę samą wartość, jeśli aplikacja przejdzie w tryb w tle. wartość zmieni się tylko wtedy, gdy aplikacja zostanie ponownie uruchomiona.
Ale szczerze mówiąc, lepiej jest śledzić fakt, że aplikacja została przynajmniej raz wysłana do tła. W takim przypadku wolę użyć rozszerzenia na UIApplication i ustawić flagę w metodzie applicationDidEnterBackground tak, że:
a następnie w delegacie aplikacji lub delegacie sceny
źródło
Swift 5 iOS 13.
Lubię szybkie i łatwe Chris Fremgen . Więc zaktualizowałem to.
źródło
Zaktualizowano dla XCode 11 , Swift 5
Następnie nazywasz to jako
źródło
NSUserDefaults + Macro
Najlepszym podejściem jest użycie
NSUserDefaults
i zapisanieBOOL
zmiennej. Jak wspomniano powyżej, następujący kod będzie dobrze:Możesz również utworzyć makro jak poniżej, aby łatwo sprawdzić, czy jest to pierwsze uruchomienie, czy nie
Następnie użyj go jako takiego,
źródło
Oto odpowiedź działająca w Swift 5.0. Poprawa w porównaniu z odpowiedzią @Zaid Pathan polega na tym, że nie ma ukrytej umowy. Jeśli nie zadzwonisz
setFirstAppLaunch()
dokładnie raz przed wywołaniemisFirstAppLaunch()
, otrzymasz błąd potwierdzenia (tylko w trybie debugowania).Następnie wystarczy wywołać funkcję
setFirstAppLaunch()
na początku aplikacji iisFirstAppLaunch()
za każdym razem, gdy chcesz sprawdzić, czy Twoja aplikacja została wywołana.źródło