无法在xmpp聊天应用中注册用户

时间:2013-02-13 12:10:30

标签: iphone ios chat

我想在我的iOS App中实现XMPP框架,我已经完成了所有的事情(与其他用户聊天,显示其他用户的存在等)。

但问题是,我无法从我的应用程序中注册新用户。我正在使用以下代码,

if ([appDel.xmppStream supportsInBandRegistration])
    [appDel.xmppStream registerWithPassword:txt_Password.text error:nil];

但是为此,supportsInBandRegistration方法总是返回NO而我不会被调用方法永远不会registerWithPassword:。

如果有任何解决方案,请帮助我

2 个答案:

答案 0 :(得分:6)

您使用的服务器是什么?有些服务器支持带内注册,甚至认为它们根据XEP-0077没有发送正确的流:功能。然而,大多数人应该在迪斯科结果中给出这个特征。

----或---- 您可以通过以下代码解决此问题。它对我来说很好。 :

- (void)xmppStream:(XMPPStream *)sender didNotAuthenticate: 
(NSXMLElement *)error; 
{ 
NSLog(@"Did not authenticate"); 

 [xmppStream registerWithPassword:[[NSUserDefaults 
standardUserDefaults] stringForKey:@"userPassword"] error:nil]; 

NSError * err = nil; 

if(![[self xmppStream] registerWithPassword:password error:&err]) 
{ 
    NSLog(@"Error registering: %@", err); 
} 

} 
- (void)xmppStreamDidRegister:(XMPPStream *)sender{ 

NSLog(@"I'm in register method"); 

    } 

- (void)xmppStream:(XMPPStream *)sender didNotRegister:(NSXMLElement 
*)error{ 
NSLog(@"Sorry the registration is failed"); 

} 

我声明了registerWithPassword:error:方法 didNotAuthenticate:方法因为连接到服务器后它 是通过我的地方去做这个didNotAuthenticate方法 注册方法工作正常

答案 1 :(得分:0)

我有同样的问题,[xmppStream supportsInBandRegistration]方法返回false,因为我传递的Jid已经在服务器中注册了。

[xmppStream setMyJID:[XMPPJID jidWithString:jabberID]];

更改JID为我工作。