2011-10-13 23 views
5

Estoy creando una aplicación en la que tengo que crear una lista cuando la aplicación se lance por primera vez. Luego usaré el plist para almacenar los detalles que un usuario luego ingresa. ¿Cómo puedo detectar el primer lanzamiento de la aplicación? Estaba experimentando con NSUserDefaults, pero creo que estoy haciendo algo mal.Detectando la primera ejecución de una aplicación

Respuesta

15

Usted puede hacer esto con NSUserDefaults. Pero ten cuidado con el Número de versión.

Haz lo siguiente:

NSString *bundleVersion = [[NSBundle mainBundle] objectForInfoDictionaryKey:(NSString *)kCFBundleVersionKey]; 

NSString *appFirstStartOfVersionKey = [NSString stringWithFormat:@"first_start_%@", bundleVersion]; 

NSNumber *alreadyStartedOnVersion = [[NSUserDefaults standardUserDefaults] objectForKey:appFirstStartOfVersionKey]; 
if(!alreadyStartedOnVersion || [alreadyStartedOnVersion boolValue] == NO) { 
    [self firstStartCode]; 
    [[NSUserDefaults standardUserDefaults] setObject:[NSNumber numberWithBool:YES] forKey:appFirstStartOfVersionKey]; 
} 

el selector de firstStartCode sólo se llama en el tiempo para cada versión de la aplicación en la primera carrera.

¿Está bien?

+0

+1 Así es como siempre lo hago. –

2

Me gusta usar NSUserDefaults para almacenar una indicación de la primera ejecución.

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
if (![defaults objectForKey:@"firstRun"]) 
    [defaults setObject:[NSDate date] forKey:@"firstRun"]; 

[[NSUserDefaults standardUserDefaults] synchronize]; 

A continuación, puede probar por ello más tarde ...

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];   
if([defaults objectForKey:@"firstRun"])   
{ 
    // do something or not... 
} 

Tomado de: Best way to check if an iPhone app is running for the first time

+0

por lo que el primer bloque de código, lo pongo en el delegado de la aplicación bajo didFinishLaunching? – theNoobProgrammer

+0

Sí, eso debería funcionar. – CamelSlack

2

Usted puede usar la siguiente:

-(void) firstLaunch { 
    //Code goes here 
} 

-(void) firstLaunchCheck { 
    if(![[NSUserDefaults standardUserDefaults] boolForKey:@"didLaunchFirstTime"]) { 
     [[NSUserDefaults standardUserDefaults] setBool:TRUE forKey:@"didLaunchFirstTime"]; 
     [self firstLaunch]; 
    } 
} 
Cuestiones relacionadas