在Openfire中使用User Service通过xmpp framework for iOS注册新用户

时间:2014-06-19 02:36:59

标签: ios web-services openfire xmppframework user-registration

我现在可以看到在我的openfire服务器中手动创建的用户,我正在使用一本书来实现这一点但是,程序员可以通过http使用openfire和用户服务插件注册用户。我想知道如何使用此功能注册新用户,如果我可以使用我的iOS应用程序检查用户是否已存在于openfire服务器上。我如何获得我的openfire的http链接以实现注册,还是有另一种方式?我读到,对于自定义注册,最好创建一个Web服务,但我对网络服务知之甚少,所以请任何人都可以提供帮助,谢谢。

2 个答案:

答案 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