【问题标题】:xmppframework iphone Unable to add users to already created room (group chat)xmppframework iphone 无法将用户添加到已创建的房间(群聊)
【发布时间】:2012-07-10 19:54:34
【问题描述】:

我正在尝试在 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 服务器上这个房间下的用户应该增加到两个,因为又有一个用户加入了这个房间,但它仍然只显示一个以前的用户成员。

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

【问题讨论】:

  • 我在“if ([xmppRoom preJoinWithNickname:@"viratsRoom"]) {"中遇到错误
  • @virata 你能上传演示代码吗?我无法使用相同的代码创建组。我已成功集成一对一聊天。

标签: iphone xcode xmppframework


【解决方案1】:

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

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

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

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

:)

【讨论】:

  • 感谢您分享信息,非常感谢。我是 Mohit,我目前正在为我的一个项目开发 XMPP。我已经设法实现了一对一的聊天,现在我需要实现群聊,我可以看到你已经完成了。我想知道您是否指导我如何创建房间并与我分享您的群聊知识。任何小代码都会对我有很大帮助。我承受着压力,知识和代码的好话对我有很大帮助。
  • @virata:感谢您的回答。它帮助了我。想提出建议这种方法确实有效,但它有点像黑客,因为我们不确定配置房间实际上需要多少时间。而不是这样,我们可以在方法- (void)xmppRoom:(XMPPRoom *)sender didFetchConfigurationForm:(NSXMLElement *)configForm中调用方法configureRoomUsingOptions:,这是XMPPRoom类的委托方法,在房间配置完成后被调用。
猜你喜欢
  • 2019-05-10
  • 2012-02-20
  • 2014-06-16
  • 2011-10-10
  • 2015-03-29
  • 1970-01-01
  • 2015-04-08
  • 2017-05-21
相关资源
最近更新 更多