我现在可以看到在我的openfire服务器中手动创建的用户,我正在使用一本书来实现这一点但是,程序员可以通过http使用openfire和用户服务插件注册用户。我想知道如何使用此功能注册新用户,如果我可以使用我的iOS应用程序检查用户是否已存在于openfire服务器上。我如何获得我的openfire的http链接以实现注册,还是有另一种方式?我读到,对于自定义注册,最好创建一个Web服务,但我对网络服务知之甚少,所以请任何人都可以提供帮助,谢谢。
答案 0 :(得分:2)
您需要通过创建NSXMLElement来注册用户并将其传递给xmppstream以注册新用户。请确保您拥有xmppstream对象,以便您能够将查询发送到服务器并获得所需的输出。
NSMutableArray *elements = [NSMutableArray array];
[elements addObject:[NSXMLElement elementWithName:@"username" stringValue:@"abc"]];
[elements addObject:[NSXMLElement elementWithName:@"password" stringValue:@"xyz"]];
[elements addObject:[NSXMLElement elementWithName:@"name" stringValue:@"abc"]];
[elements addObject:[NSXMLElement elementWithName:@"email" stringValue:@"abc@xyz.com"]];
[self.xmppStream registerWithElements:elements error:nil];
[self connect];
这将注册一个新用户,或者如果用户已经存在于您的服务器上,它会在收到的iq中出错。
答案 1 :(得分:0)
此解决方案已经为我工作了。更有条理的approch
NSString *username = @"rohit@XMPP_SERVER_IP_HERE"; // OR [NSString stringWithFormat:@"%@@%@",username,XMPP_BASE_URL]]
NSString *password = @"SOME_PASSWORD";
AppDelegate *del = (AppDelegate *)[[UIApplication sharedApplication] delegate];
del.xmppStream.myJID = [XMPPJID jidWithString: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