2009-12-25 4 views
2

Depuis que je suis nouveau à la programmation iPhone, je veux faire quelque chose comme ça: Dans l'écran principal de mon application, je demande un nom d'utilisateur et mot de passe et autorise l'utilisateur. . Dans cet écran principal, il y a un contrôleur de commutation "Se souvenir de moi" afin que l'application se souvienne de l'utilisateur la prochaine fois qu'il lance l'application. Mes questions sont: 1. comment puis-je appeler les services web .net dans l'iPhone? 2. Comment puis-je conserver ces informations de nom d'utilisateur et de mot de passe (comme les cookies dans l'application Web), de sorte que l'utilisateur ne soit pas invité à fournir des informations d'identification? j'apprécierais vraiment, merci.persistance des informations d'identification dans l'iPhone

Répondre

1
  1. vous utilisez NSMutableURLRequest pour générer une demande de services Web
  2. utilisation NSUserDefaults persister le nom d'utilisateur et mot de passe

Voici un exemple de la première:

-(void)sendUpdate { 

    User *user = [User sharedManager]; 

    NSData *parkedLocation = [[NSString stringWithFormat:@"<location><latitude>%f</latitude><longitude>%f</longitude><userid>%@</userid><udid>%@</udid></location>", 
           coordinate.latitude, coordinate.longitude, userid, user.udid] dataUsingEncoding:NSASCIIStringEncoding]; 
    //NSLog("parkedlocation = %@", parkedLocation); 
    NSString *URLstr = LOCATIONS_URL; 
    if (controller.put_url) 
     URLstr = controller.put_url; 
    NSURL *theURL = [NSURL URLWithString:URLstr]; 
    //NSURLRequest *theRequest = [NSURLRequest requestWithURL:theURL cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:10.0]; 
    NSLog(@"IN SEND UPDATE put_url = %@", controller.put_url); 

    NSMutableURLRequest *theRequest = [NSMutableURLRequest requestWithURL:theURL cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:10.0]; 
    if (controller.put_url) { 
     [theRequest setHTTPMethod:@"PUT"]; 
    } else { 
     [theRequest setHTTPMethod:@"POST"]; 
    } 
    [theRequest setValue:@"text/xml" forHTTPHeaderField:@"Content-type"]; 
    [theRequest setHTTPBody:parkedLocation]; 

    [[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:TRUE]; 

    NSURLConnection *theConnection = [[NSURLConnection alloc] initWithRequest:theRequest delegate:self]; 

    if (!theConnection) { 
     NSLog(@"COuldn't get a connection to the iParkNow! server"); 
    } 
} 

et un exemple de la seconde:

[[NSUserDefaults standardUserDefaults] setObject:self.userName.text forKey:@"Username"]; 
     [[NSUserDefaults standardUserDefaults] setObject:self.password.text forKey:@"Password"]; 
+0

merci pour votre réponse urgente. Je vais l'essayer. – molloy

+0

Je recommande d'utiliser keychain pour stocker les informations d'identification de l'utilisateur, il y a un lien vers l'exemple dans un autre commentaire. –

0

Vous avez deux choix: Préférences utilisateur ou Données de base. Les deux sont capables - Core Data pourrait être exagéré.

+0

je devrais étudier sur les données de base.Je pense que ce sera dur mais très sympa ... – molloy

0

NSURLRequest peut être utilisé pour récupérer des URL telles que votre service d'authentification. Et NsUserDefaults peut être utilisé pour enregistrer les paramètres entre les invocations app.

Remarque: Découvrez l'exemple génial d'ennuikiller.

2

informations d'identification utilisateur Persistance

Si vous enregistrez un nom d'utilisateur et mot de passe, vous devez utiliser le trousseau. L'utilisation du Keychain sur iPhone est similaire à Keychain sur Mac.

Pour utiliser Keychain import "Security/Security.h".

Apple a un exemple here d'ajouter et de récupérer un nom d'utilisateur et mot de passe dans leur documentation. Les exemples de méthodes

- (void)mySetObject:(id)inObject forKey:(id)key; 
    - (id)myObjectForKey:(id)key; 
    - (void)resetKeychainItem; 

vous permettront de conserver et d'extraire vos informations d'identification sans modifier l'exemple de code.

Appel webservices qui nécessitent une authentification

Selon vous système d'authentification, vous pouvez soit

Questions connexes