4

我对 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);
}

我希望你能帮帮我 !

4

4 回答 4

0

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

[xmppStream connect:&error]

从错误消息中,您实际上没有连接。

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

于 2012-09-10T07:50:31.897 回答
0
/**
 * 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]
于 2013-06-14T07:39:55.850 回答
0

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

于 2014-10-22T08:17:15.873 回答
0

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

于 2014-11-15T22:00:12.593 回答