你用的是什么服务器?一些服务器支持带内注册,即使它们没有发送正确的流:根据 XEP-0077 的功能。然而,他们中的大多数人应该在迪斯科结果中给出该功能。
---- OR ---- 您可以通过以下代码解决此问题。它对我来说很好。:
- (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");
}
我在 didNotAuthenticate: 方法中声明了 registerWithPassword:error: 方法,因为在连接到服务器后,它将通过我的注册方法正常工作的地方进入这个 didNotAuthenticate 方法