Wie kann ich den allerersten Start von erkennen?
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
// if very first launch than perform actionA
// else perform actionB
}
Methode?
ios
iphone
launch
launching-application
Shishir.bobby
quelle
quelle
Antworten:
quelle
BOOL
. 2. Dann ist der Fehler in Ihrem Code ... Wenn die Rückgabe von 0 diesen Absturz verursacht, stimmt etwas schrecklich nicht - anderswo.NSUserDefaults
alltäglicher Ort? Was ist, wenn eine andere Anwendung denselben "Schlüssel" verwendet, den ich verwende?Versuchen Sie in Swift 3, 4 Folgendes:
Versuchen Sie in Swift 2 Folgendes:
UPDATE: - Für OBJ-C benutze ich dies,
Ref für OBJ-C: https://stackoverflow.com/a/9964400/3411787
quelle
Zu diesem Zweck habe ich eine winzige Bibliothek geschrieben. Hier erfahren Sie, ob dies der erste Start überhaupt ist oder nur für diese Version und für alle früheren Versionen, die der Benutzer installiert hat. Es ist auf Github als Cocoapod unter der Apache 2-Lizenz erhältlich: GBVersionTracking
Sie rufen dies einfach an
application:didFinishLaunching:withOptions:
Und um zu überprüfen, ob dies der erste Start ist, rufen Sie dies einfach irgendwo auf:
Und ähnlich:
quelle
für Swift 3.0 - Swift 5
Erweiterung hinzufügen
dann in deinem Code
quelle
Eine weitere Idee für Xcode 7 und Swift 2.0 ist die Verwendung von Erweiterungen
Jetzt können Sie überall in Ihrer App schreiben
Ich persönlich bevorzuge eine Erweiterung von UIApplication wie folgt:
Weil der Funktionsaufruf aussagekräftiger ist:
quelle
Sie können es mit der folgenden statischen Methode implementieren:
quelle
Sie müssen beim Start etwas speichern und dann überprüfen, ob es vorhanden ist. Wenn nicht, ist es das erste Mal. "Etwas" kann eine Datei, ein Datenbankeintrag, eine Einstellung in den Benutzerstandards sein ...
quelle
Dies ist recht einfach und erfordert nur sechs Codezeilen.
Es ist hilfreich, diesen Code in den Einstellungen für den Anwendungsstart oder an einer anderen Stelle hinzuzufügen, an der Sie möglicherweise testen müssen, ob Ihre Anwendung zum ersten Mal ausgeführt wurde.
PS Verwenden Sie in den Einstellungen KEINE Bools einfach an ganze Zahlen. Sie sind standardmäßig Null, wenn sie nicht definiert sind.
Außerdem ist die
[theDefaults synchronize];
Leitung nicht erforderlich, aber ich habe festgestellt, dass die Ergebnisse nicht immer zuverlässig sind, wenn eine App hunderte Male auf Hunderten von Geräten ausgeführt wird. Außerdem ist dies eine bessere Vorgehensweise.quelle
Speichern Sie einen Bool-Schlüssel in NSUserDefaults, wenn er zum ersten Mal "Nein" ist. Sie ändern ihn in "Ja" und behalten ihn bei, bis die App beim ersten Mal gelöscht oder neu installiert wird.
quelle
Schnelle und einfache Funktion
quelle
Für Swift 2.0 in Xcode 7. In der Datei AppDelegate.swift:
quelle
Registrieren Sie die Standardwerte beim Start der App:
Klarer Wert bei App-Beendigung:
Wert prüfen:
quelle
In Kürze würde ich vorschlagen, eine globale Konstante zu verwenden, die sehr einfach außerhalb eines Bereichs wie über dem App-Delegaten durchgeführt werden kann. Somit wird es auf den richtigen Wert gesetzt, solange die App nicht beendet wird. Es wird immer noch der gleiche Wert zurückgegeben, wenn die App in den Hintergrund wechselt. Der Wert ändert sich nur, wenn die App vollständig neu gestartet wird.
Aber ehrlich gesagt ist es besser zu verfolgen, dass die App mindestens einmal in den Hintergrund gesendet wurde. In diesem Fall bevorzuge ich die Verwendung einer Erweiterung für UIApplication und setze das Flag in der applicationDidEnterBackground-Methode so, dass:
und dann in Ihrem App-Delegaten oder Szenendelegierten
quelle
Swift 5 iOS 13.
Ich mag schnell und einfach von Chris Fremgen . Also habe ich es aktualisiert.
quelle
Aktualisiert für XCode 11 , Swift 5
Dann nennst du es als
quelle
NSUserDefaults + Makro
Der beste Ansatz besteht darin
NSUserDefaults
, eineBOOL
Variable zu verwenden und zu speichern . Wie oben erwähnt, reicht der folgende Code aus:Sie können auch ein Makro wie folgt erstellen, um auf einfache Weise zu überprüfen, ob es sich um den ersten Start handelt oder nicht
Dann benutze es als solches,
quelle
Hier ist eine Antwort, die in Swift 5.0 funktioniert. Die Verbesserung gegenüber der Antwort von @Zaid Pathan ist, dass es keinen versteckten Vertrag gibt. Wenn Sie vor dem Aufruf nicht
setFirstAppLaunch()
genau einmal aufrufenisFirstAppLaunch()
, wird ein Bestätigungsfehler angezeigt (nur im Debug-Modus).Dann müssen Sie nur noch die Funktion
setFirstAppLaunch()
zu Beginn Ihrer Anwendung aufrufen undisFirstAppLaunch()
wann immer Sie überprüfen möchten, ob Ihre App aufgerufen wurde.quelle