2009-08-17 8 views
0

Comment faire en sorte que mon application affiche quelque chose uniquement lors du premier lancement de l'application pour la première fois. Exemple: Ils ouvrent mon application, une alerte apparaît, disant quelque chose comme: "Voulez-vous lire le tutoriel?" Ensuite, s'ils ferment l'application, puis l'ouvrent à nouveau, elle ne s'affichera plus.Programmation d'événements iPhone One Time

Merci

Répondre

1

Je vous recommande d'utiliser NSUserDefaults:

- (void)openOneTime 
{ 
    NSUserDefaults*  defaults = [NSUserDefaults standardUserDefaults]; 
    static const NSString* kKey = @"One Time Key"; 
    NSObject*    keyValue = [defaults objectForKey:kKey]; 

    if (keyValue == nil) 
    { 
     [self doMyOneTimeThing]; // pop a dialog, etc... 
    } 

    // Adds an object for our key which will get found the next time around, 
    // bypassing the above code block. The type and value of the object is 
    // not important; what matters more is that an object exists for that 
    // key at all. 

    [defaults setBool:YES forKey:kKey]; 
} 
0

Vous pouvez stocker dans votre magasin de propriété une valeur booléenne dire que ce soit la première fois ou non, vérifiez que le démarrage de l'application.

1

Plus de conseils sur le stockage des données: la persistance

Méthode 1: Utilisez le système global de préférences de l'utilisateur. Vous pouvez le faire, mais il pourrait être considéré comme légèrement hacky parce qu'il est conçu pour stocker les préférences de l'utilisateur, et je pense que c'est une zone grise, car l'utilisateur n'a pas de contrôle explicite ici. En tout cas, consultez les documents pour NSUserDefaults pour savoir comment faire cela.

Méthode 2: Écrire dans un fichier dont l'existence indique si le tutoriel a été visualisé ou non. Vous pouvez facilement créer un fichier avec un objet NSData en appelant sa méthode writeToFile:atomically:. Plus tard, vous pouvez utiliser la classe NSFileManager pour vérifier si ce fichier existe ou non.

Exemple de code:

- (NSString*) filename { 
    NSArray* paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, 
                 NSUserDomainMask, YES); 
    NSString* documentsDirectory = [paths objectAtIndex:0]; 
    return [documentsDirectory stringByAppendingPathComponent:@"notFirstTime"]; 
} 

- (void) setNotFirstTime { 
    NSData* data = [[[NSData alloc] init] autorelease]; 
    [data writeToFile:[self filename] atomically:YES]; 
} 

- (BOOL) isNotFirstTime { 
    return [[NSFileManager defaultManager] fileExistsAtPath:[self filename]]; 
}