2

我正在尝试在 iphone 中进行群聊,我能够成功使用单聊。

我已经使用以下代码成功创建了新房间。

XMPPRoomCoreDataStorage *rosterstorage = [[XMPPRoomCoreDataStorage alloc] init];
XMPPRoom *xmppRoom = [[XMPPRoom alloc] initWithRoomStorage:rosterstorage jid:[XMPPJID jidWithString:@"viratsroom@conference.praveens-mac-mini.local"] dispatchQueue:dispatch_get_main_queue()];

[xmppRoom activate:[[self appDelegate] xmppStream]];
if ([xmppRoom preJoinWithNickname:@"viratsRoom"]) {
  NSLog(@"room created");
  [xmppRoom joinRoomUsingNickname:@"viratsroom11" history:nil];
}
[xmppRoom fetchConfigurationForm];
[xmppRoom configureRoomUsingOptions:nil];
[xmppRoom addDelegate:[self appDelegate] delegateQueue:dispatch_get_main_queue()];

现在在该组的用户下,openfire 服务器上显示了一个用户,这是正确的。我的问题是,1)在哪里以及如何处理邀请消息加入群组?2)我尝试使用以下代码加入上面的同一组

XMPPRoomCoreDataStorage *rosterstorage = [[XMPPRoomCoreDataStorage alloc] init];
XMPPRoom *xmppRoom = [[XMPPRoom alloc] initWithRoomStorage:rosterstorage jid:[XMPPJID jidWithString:@"viratsroom@conference.praveens-mac-mini.local"] dispatchQueue:dispatch_get_main_queue()];
[xmppRoom activate:[[self appDelegate] xmppStream]];
[xmppRoom joinRoomUsingNickname:@"viratsroom11" history:nil];
[xmppRoom fetchConfigurationForm];
[xmppRoom configureRoomUsingOptions:nil];
[xmppRoom addDelegate:[self appDelegate] delegateQueue:dispatch_get_main_queue()];

房间名称现在显示在我的离线用户列表中。现在 openfire 服务器上这个房间下的用户应该增加到两个,因为又有一个用户加入了这个房间,但它仍然只显示一个以前的用户成员。

我错过了什么吗?代码中的任何错误?请帮忙!谢谢 。

4

1 回答 1

3

我明白了,房间没有正确配置,因此在创建房间后立即调用它的所有问题都不起作用-

[xmppRoom fetchConfigurationForm]; 
[xmppRoom configureRoomUsingOptions:nil];

创建房间需要一点时间,然后您可以配置房间。

[self performSelector:@selector(ConfigureNewRoom:) withObject:nil afterDelay:2];

:)

于 2012-07-17T11:22:20.380 回答