iOS XMPPFramework registerWithPassword 错误

Posted

技术标签:

【中文标题】iOS XMPPFramework registerWithPassword 错误【英文标题】:iOS XMPPFramework registerWithPassword ERROR 【发布时间】:2012-09-08 19:16:47 【问题描述】:

我遇到了适用于 ios 的 XMPP 框架的问题。每次我触发registerWithPassword 方法时都会出现错误:

"Error Domain=XMPPStreamErrorDomain Code=1"请等到 流已连接。” UserInfo=0xad7c300 NSLocalizedDescription=请等待,直到流连接。 "

我在我的代码中执行以下步骤:

 -(void)createUserWithUsername:(NSString*)name andPW:(NSString*)pw

[self setupStream];
NSLog(@"name: %@ ",name);

NSString *nameFor = name;
[self disconnect];

NSString *jidBenutzer = [NSString stringWithFormat:@"%@@my-Server.com",nameFor];
NSError *error = nil;

NSError * err = nil; 
NSLog(@"jabberid : %@",jidBenutzer);
XMPPJID *jid = [XMPPJID jidWithString:jidBenutzer];
self.xmppStream.myJID = jid;


[[self xmppStream] registerWithPassword:pw error:&err];


NSLog(@"Connection: %@",error);

NSLog(@"Register: %@",err);

我希望你能帮助我!

【问题讨论】:

从错误描述:请等到流连接 - 我猜你正在尝试登录,但没有连接。您确定您的连接正常吗? 嘿,如果我直接在服务器上使用用户名注册用户,然后在我的应用程序中使用用户名和密码,则连接有效。 @rollerückwärts 你找到解决办法了吗? 【参考方案1】:

从您的示例代码中,我没有看到任何调用:

[xmppStream connect:&error]

从报错信息来看,你实际上是没有连接的。

确保您正确调用连接方法并相应地处理错误。

【讨论】:

嘿,我无法将xmpp 连接到openfire。你是怎么连接的?你能帮我做这件事吗?我一直在寻找这个一周,但没有得到任何解决方案。请帮助代码sn-p。我也在 1 周前发布了问题。请在此处查看我的代码。 ***.com/questions/26750301/…【参考方案2】:
/**
 * This method attempts to register a new user on the server using the given username and password.
 * The result of this action will be returned via the delegate methods.
 * 
 * If the XMPPStream is not connected, or the server doesn't support in-band registration, this method does nothing.
 **/

这是下面。

 - (BOOL)registerWithPassword:(NSString *)password error:(NSError **)errPtr

方法的说明。你会发现在使用这个方法之前,你必须连接服务器。

我在下面找不到。

   [xmppStream connect:&error]

我用这个。

   NSError *error;
   NSString *tjid = [[NSString alloc] initWithFormat:@"anonymous@%@", serverName];

   isRegister = YES;
   [xmppStream setMyJID:[XMPPJID jidWithString:tjid]];

   [xmppStream connectWithTimeout:XMPPStreamTimeoutNone error:&error]

【讨论】:

【参考方案3】:

请确保您的 openfire 服务器已从您的系统偏好设置中打开。

【讨论】:

【参考方案4】:

这是一个迟到的答案,但对于像我这样的任何新开发人员来说仍然是:您必须在注册之前匿名登录:例如,您使用 yourname@yourserver 登录,您的密码尝试使用 unknown@yourserver 登录,而密码则什么都不输入。所以它将连接流但不会验证这是注册所必需的。 流应已连接但未经过身份验证。

【讨论】:

以上是关于iOS XMPPFramework registerWithPassword 错误的主要内容,如果未能解决你的问题,请参考以下文章

iOS开发--XMPPFramework--好友列表

如何在目标c中通过ios中的XMPPFramework连接XMPP服务器

iOS XMPPFramework registerWithPassword 错误

iOS开发--XMPPFramework--好友模块

如何在iOS的XMPPFramework中实现发送好友请求的方式?

XMPPFramework for iOS,didReceiveTrust 实现