168 votes

Comment détecter le lancement d'une première application sur un iPhone

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?

34voto

lms Points 3240

J'ai écrit une petite bibliothèque. Il me permet de savoir si c'est le premier lancement jamais, ou juste pour cette version et les versions antérieures de l'utilisation qui a installé. C'est sur github: GBVersionTracking

Vous appelez cela en application:didFinishLaunching:withOptions:

[GBVersionTracking track];

Et puis de vérifier si c'est le premier lancement d'appel de n'importe où:

[GBVersionTracking isFirstLaunchEver];

Et de la même façon:

[GBVersionTracking isFirstLaunchForVersion];

[GBVersionTracking currentVersion];
[GBVersionTracking previousVersion];
[GBVersionTracking versionHistory];

8voto

Mati Bot Points 370

Vous pouvez l'implémenter avec la méthode statique ci-dessous:

 + (BOOL)isFirstTime{
static BOOL flag=NO;
static BOOL result;
if(!flag){
    if ([[NSUserDefaults standardUserDefaults] boolForKey:@"hasLaunchedOnce"])
    {
        result=NO;
    }
    else
    {
        [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"hasLaunchedOnce"];
        [[NSUserDefaults standardUserDefaults] synchronize];
        result=YES;
    }

    flag=YES;
}
return result;}
 

5voto

Phillip Mills Points 16240

Vous devez enregistrer quelque chose lorsque vous lancez, puis vérifiez si elle 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 ....

4voto

Milo Points 1185

C'est assez simple à faire et ne nécessite que six lignes de code.

Il sera utile d'ajouter ce code dans votre lancement de l'application des préférences ou n'importe où ailleurs vous pourriez avoir besoin de tester si oui ou non ses la première fois que votre demande a été exécuté.

//These next six lines of code are the only ones required! The rest is just running      code when it's the first time.
//Declare an integer and a default.
NSUserDefaults *theDefaults;
int  launchCount;
//Set up the properties for the integer and default.
theDefaults = [NSUserDefaults standardUserDefaults];
launchCount = [theDefaults integerForKey:@"hasRun"] + 1;
[theDefaults setInteger:launchCount forKey:@"hasRun"];
[theDefaults synchronize];

//Log the amount of times the application has been run
NSLog(@"This application has been run %d amount of times", launchCount);

//Test if application is the first time running
if(launchCount == 1) {
    //Run your first launch code (Bring user to info/setup screen, etc.)
    NSLog(@"This is the first time this application has been run";
}

//Test if it has been run before
if(launchCount >= 2) {
    //Run new code if they have opened the app before (Bring user to home screen etc.
    NSLog(@"This application has been run before);
}

P. S. Ne PAS utiliser des booléens dans les préférences, il suffit de coller à des entiers. Ils ont alors la valeur zéro lorsque undefined.

Aussi, l' [theDefaults synchronize]; ligne n'est pas obligatoire, mais j'ai trouvé que lorsqu'une application est couru des centaines de fois sur des centaines d'appareils, les résultats ne sont pas toujours fiables, d'ailleurs, c'est une meilleure pratique.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X