Comment détecter le lancement d'une application iPhone?
Réponses
Trop de publicités?Presque tout ce que Marc et Chris ont dit, bien que je préfère changer la valeur lorsque l'application se ferme au cas où il y aurait plusieurs zones de l'application à connaître. Dans du code:
// -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"];
Je me rends compte que cette question est assez ancienne, mais je l’ai utilisée pour trouver une méthode de détection du premier démarrage après une «nouvelle installation» (par rapport au premier démarrage après une mise à niveau / une mise à niveau) et je pensais partager le code ici futurs téléspectateurs au cas où cela serait utile.
// 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];
C’est un raccourci très simple, mais j’ai constaté que les paires valeur / clé NSUserDefault sont toujours NULL la première fois que vous exécutez une application,
// Check to see if its the first time
if ([[NSUserDefaults standardUserDefaults] valueForKey:@"firstTime"] == NULL) {
[[NSUserDefaults standardUserDefaults] setValue:@"Not" forKey:@"firstTime"];
}
et placez ce code dans le awakeFromNib du contrôleur de vue qui apparaît lors du lancement de votre application. Je ne sais pas si l'une des autres réponses fonctionne pour votre problème, mais c'est la façon dont je l'ai résolu.
Pour ce faire, vous pouvez définir une valeur booléenne dans les paramètres utilisateur par défaut. Définissez la clé sur false lorsque vous appelez registerDefaults:
, puis définissez-la sur true, définissez-la sur true après avoir affiché votre écran d'aide initial ou effectué une autre tâche.
Si vous avez un fichier de données persistant qui est toujours enregistré après la fermeture de l'application, il peut être utile de vérifier s'il existe.