Méthodes pour l'logging d'un nouvel user xmpp framework iOS

J'ai développé le client XMPP Chat pour iOS et maintenant je search comment faire un nouvel logging d'user à partir d'iOS lui-même. Quelqu'un peut-il aider avec les methods utilisées pour save un nouvel user. Comme il doit communiquer avec le server et stocker le nom d'user et mot de passe à la database du server. S'il vous plaît aidez-moi je le cherche à partir de 2 jours.

Cette solution A TRAVAILLÉ pour moi

NSSsortingng *username = @"rohit@XMPP_SERVER_IP_HERE"; // OR [NSSsortingng ssortingngWithFormat:@"%@@%@",username,XMPP_BASE_URL]] NSSsortingng *password = @"SOME_PASSWORD"; AppDelegate *del = (AppDelegate *)[[UIApplication sharedApplication] delegate]; del.xmppStream.myJID = [XMPPJID jidWithSsortingng:username]; NSLog(@"Does supports registration %ub ", ); NSLog(@"Attempting registration for username %@",del.xmppStream.myJID.bare); if (del.xmppStream.supportsInBandRegistration) { NSError *error = nil; if (![del.xmppStream registerWithPassword:password error:&error]) { NSLog(@"Oops, I forgot something: %@", error); }else{ NSLog(@"No Error"); } } // You will get delegate called after registrations in either success or failure case. These delegates are in XMPPStream class // - (void)xmppStreamDidRegister:(XMPPStream *)sender //- (void)xmppStream:(XMPPStream *)sender didNotRegister:(NSXMLElement *)error 
 NSMutableArray *elements = [NSMutableArray array]; [elements addObject:[NSXMLElement elementWithName:@"username" ssortingngValue:@"venkat"]]; [elements addObject:[NSXMLElement elementWithName:@"password" ssortingngValue:@"dfds"]]; [elements addObject:[NSXMLElement elementWithName:@"name" ssortingngValue:@"eref defg"]]; [elements addObject:[NSXMLElement elementWithName:@"accountType" ssortingngValue:@"3"]]; [elements addObject:[NSXMLElement elementWithName:@"deviceToken" ssortingngValue:@"adfg3455bhjdfsdfhhaqjdsjd635n"]]; [elements addObject:[NSXMLElement elementWithName:@"email" ssortingngValue:@"abc@bbc.com"]]; [[[self appDelegate] xmppStream] registerWithElements:elements error:nil]; 

Nous saurons si l'inscription est réussie ou non en utilisant les delegates ci-dessous.

 - (void)xmppStreamDidRegister:(XMPPStream *)sender{ UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Registration" message:@"Registration Successful!" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil, nil]; [alert show]; } - (void)xmppStream:(XMPPStream *)sender didNotRegister:(NSXMLElement *)error{ DDXMLElement *errorXML = [error elementForName:@"error"]; NSSsortingng *errorCode = [[errorXML atsortingbuteForName:@"code"] ssortingngValue]; NSSsortingng *regError = [NSSsortingng ssortingngWithFormat:@"ERROR :- %@",error.description]; UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Registration Failed!" message:regError delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil, nil]; if([errorCode isEqualToSsortingng:@"409"]){ [alert setMessage:@"Username Already Exists!"]; } [alert show]; } 

Le nouvel user peut s'inscrire sur le server XMPP depuis iOS par deux methods

Methode 1.) By Enregistrement dans la bande (logging dans la bande signifie que les users qui n'ont pas de count sur votre server peuvent s'save en utilisant le protocole XMPP lui-même, donc l'logging rest "dans la bande", dans le même protocole que vous déjà en utilisant.) vous devez utiliser l'extension XEP-0077 .

Et votre server devrait également prendre en charge l'logging dans la bande.

Suivez ces étapes pour l'logging dans la bande

étape 1: se connecter avec xmppStream

 - (BOOL)connectAndRegister { if (![xmppStream isDisconnected]) { return YES; } NSSsortingng *myJID = @"abc@XMPP_SERVER_IP_HERE"; // OR [NSSsortingng ssortingngWithFormat:@"%@@%@",username,XMPP_BASE_URL]] NSSsortingng *myPassword = @"SOME_PASSWORD"; // // If you don't want to use the Settings view to set the JID, // uncomment the section below to hard code a JID and password. // // Replace me with the proper JID and password: // myJID = @"user@gmail.com/xmppframework"; // myPassword = @""; if (myJID == nil || myPassword == nil) { DDLogWarn(@"JID and password must be set before connecting!"); return NO; } [xmppStream setMyJID:[XMPPJID jidWithSsortingng:myJID]]; password = myPassword; NSError *error = nil; if (![xmppStream connect:&error]) { UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Error connecting" message:@"See console for error details." delegate:nil cancelButtonTitle:@"Ok" otherButtonTitles:nil]; [alertView show]; DDLogError(@"Error connecting: %@", error); return NO; } return YES; } 

NSSsortingng *password déclarez @interface dans votre file

Étape 2: Lorsque xmppStream Delegate - (void)xmppStreamDidConnect:(XMPPStream *)sender appel de l' - (void)xmppStreamDidConnect:(XMPPStream *)sender

Étape 3: Commencez à vous save via l'logging intrabande

 - (void)xmppStreamDidConnect:(XMPPStream *)sender{ DDLogVerbose(@"%@: %@", THIS_FILE, THIS_METHOD); [[NSNotificationCenter defaultCenter] postNotificationName:XMPPStreamStatusDidConnectNotification object:nil userInfo:nil]; _isXmppConnected = YES; NSError *error = nil; DDLogVerbose(@"Start register via In-Band Registration..."); if (xmppStream.supportsInBandRegistration) { if (![xmppStream registerWithPassword:password error:&error]) { NSLog(@"Oops, I forgot something: %@", error); }else { NSLog(@"No Error"); } } // [_xmppStream authenticateWithPassword:password error:&error]; } 

Étape 4: Vérifiez le succès ou l'échec de l'inscription auprès du délégué XMPPStream

 - (void)xmppStreamDidRegister:(XMPPStream *)sender - (void)xmppStream:(XMPPStream *)sender didNotRegister:(NSXMLElement *)error 

Méthode 2.) Par XMPP Rest Api sur le server openFire a installé un plugin (Rest Api plugin) qui permet l'logging normal.

Utilisez ces étapes pour l'logging Rest Api

Étape 1: Installez Rest Api plugin sur le server

Étape 2: Configurez le server pour Rest Api comme server -> Paramètres du server -> Rest Api puis activez-le.

Vous pouvez utiliser «Authentification par key secrète» pour l'logging sécurisé de l'user, donc copyz-le à partir du server openfire et utilisez-le lorsque l'API de repos est appelée pour l'logging.

étape 3: Appelez Rest Api pour l'logging

 -(void)CreateUserAPI { NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:@"abc",@"username",@"SOME_PASSWORD",@"password",@"abc-nickname",@"name",@"abc@example.com",@"email", nil]; NSData* RequestData = [NSJSONSerialization dataWithJSONObject:dict options:0 error:nil]; NSMutableURLRequest *request = [ [ NSMutableURLRequest alloc ] initWithURL: [ NSURL URLWithSsortingng:[NSSsortingng ssortingngWithFormat:@"%@users",RESTAPISERVER]]]; [request setHTTPMethod: @"POST"]; [request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"]; [request setValue:AuthenticationToken forHTTPHeaderField:@"Authorization"]; [request setHTTPBody: RequestData]; NSURLSession *session = [NSURLSession sharedSession]; [[session dataTaskWithRequest:request completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { // handle response if (!error) { NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *) response; if ([httpResponse statusCode]==201) { NSLog(@"Registration Successful"); }else { NSLog(@"Registration failed"); } }else { NSLog(@"Try again for registration"); } }] resume]; } 

RESTAPISERVER est une string Rest api url.

AuthenticationToken est une "autorisation de key secrète" (copy du server openfire)