Comment puis-je détecter le tout premier lancement de
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
// if very first launch than perform actionA
// else perform actionB
}
méthode?
ios
iphone
launch
launching-application
Shishir.bobby
la source
la source
Réponses:
la source
BOOL
. 2. Ensuite, l'erreur est dans votre code ... si le retour de 0 provoque ce plantage, alors quelque chose ne va vraiment pas - ailleurs.NSUserDefaults
un lieu commun? et si une autre application utilise la même "clé" que j'utilise?Dans Swift 3, 4 essayez ceci:
Dans Swift 2, essayez ceci,
MISE À JOUR: - Pour OBJ-C j'utilise ceci,
Réf pour OBJ-C: https://stackoverflow.com/a/9964400/3411787
la source
J'ai écrit une toute petite bibliothèque dans ce but précis. Cela me permet de savoir s'il s'agit du tout premier lancement, ou simplement de cette version, et de toutes les versions précédentes installées par l'utilisateur. Il est disponible sur github en tant que cocoapod sous la licence Apache 2: GBVersionTracking
Vous appelez juste ça
application:didFinishLaunching:withOptions:
Et puis pour vérifier s'il s'agit du premier lancement, appelez-le n'importe où:
Et de même:
la source
pour Swift 3.0 - Swift 5
ajouter une extension
puis dans ton code
la source
Une autre idée pour Xcode 7 et Swift 2.0 est d'utiliser des extensions
Vous pouvez désormais écrire n'importe où dans votre application
Personnellement, je préfère une extension de UIApplication comme celle-ci:
Parce que l'appel de fonction est plus descriptif:
la source
Vous pouvez l'implémenter avec la méthode statique ci-dessous:
la source
Vous devez enregistrer quelque chose lorsque vous lancez, puis vérifier s'il existe. Sinon, c'est la première fois. "Quelque chose" peut être un fichier, une entrée de base de données, un paramètre par défaut de l'utilisateur ....
la source
C'est assez simple à faire et ne nécessite que six lignes de code.
Il sera utile d'ajouter ce code dans vos préférences de lancement d'application ou à tout autre endroit où vous pourriez avoir besoin de tester si c'est la première fois que votre application est exécutée ou non.
PS N'utilisez PAS de booléens dans les préférences simplement aux nombres entiers. Ils sont par défaut à zéro lorsqu'ils ne sont pas définis.
De plus, la
[theDefaults synchronize];
ligne n'est pas requise, mais j'ai constaté que lorsqu'une application est exécutée des centaines de fois sur des centaines d'appareils, les résultats ne sont pas toujours fiables, en plus, c'est une meilleure pratique.la source
stockez une clé booléenne dans NSUserDefaults pour la première fois, ce sera non, vous la changerez en oui et la conserverez comme ça jusqu'à ce que l'application supprime ou réinstalle ce sera à nouveau la première fois.
la source
Fonction simple et rapide
la source
Pour Swift 2.0 dans Xcode 7. Dans le fichier AppDelegate.swift:
la source
Enregistrez les valeurs par défaut au lancement de l'application:
Effacer la valeur lors de l'arrêt de l'application:
Vérifier la valeur:
la source
En swift, je suggérerais d'utiliser une constante globale qui peut être effectuée très facilement en dehors de toute portée, comme au-dessus du délégué d'application. Ainsi, il sera défini sur la bonne valeur tant que l'application n'est pas terminée. il renverra toujours la même valeur si l'application passe en arrière-plan ou plus. la valeur ne changera que si l'application est entièrement relancée.
Mais honnêtement, il est préférable de suivre le fait que l'application a été envoyée en arrière-plan au moins une fois. Dans ce cas, je préfère utiliser une extension sur UIApplication et définir le drapeau dans la méthode applicationDidEnterBackground de telle sorte que:
puis dans votre délégué d'application ou délégué de scène
la source
Swift 5 iOS 13.
J'aime rapide et facile par Chris Fremgen . Alors je l'ai mis à jour.
la source
Mis à jour pour XCode 11 , Swift 5
Ensuite, vous l'appelez comme
la source
NSUserDefaults + Macro
La meilleure approche consiste à utiliser
NSUserDefaults
et à enregistrer uneBOOL
variable. Comme mentionné ci-dessus, le code suivant fera très bien l'affaire:Vous pouvez également créer une macro comme ci-dessous pour vérifier facilement s'il s'agit du premier lancement ou non
Alors utilisez-le comme tel,
la source
Voici une réponse fonctionnant dans swift 5.0. L'amélioration par rapport à la réponse de @Zaid Pathan est qu'il n'y a pas de contrat caché. Si vous n'appelez pas
setFirstAppLaunch()
exactement une fois avant d'appeler,isFirstAppLaunch()
vous obtiendrez une erreur d'assertion (uniquement en mode débogage).Ensuite, il vous suffit d'appeler la fonction
setFirstAppLaunch()
au démarrage de votre application et àisFirstAppLaunch()
chaque fois que vous souhaitez vérifier si votre application a été appelée.la source