我正在使用聊天应用程序,我必须使用 XMPP Framework
添加群聊功能 . 我能够设置 peer-to-peer
聊天 . 但是当谈到群聊时,我无法创建 chat room
. 我知道,这个问题之前已被多次询问过,但我找不到任何解决方案 . 这是我创建和配置聊天室的代码 .
- (void)createChatRoom:(NSString *) newRoomName
{
NSString *jid=[NSString stringWithFormat:@"%@@%@",newRoomName,kGroupChatDomain];
XMPPRoomMemoryStorage * _roomMemory = [[XMPPRoomMemoryStorage alloc]init];
XMPPJID * roomJID = [XMPPJID jidWithString:jid];
_xmppRoom = [[XMPPRoom alloc] initWithRoomStorage:_roomMemory
jid:roomJID
dispatchQueue:dispatch_get_main_queue()];
NSString *nickName=[NSString stringWithFormat:@"%@chatRoom",newRoomName];
[_xmppRoom joinRoomUsingNickname:nickName
history:nil
password:nil];
[_xmppRoom activate:[AppDel xmppStream]];
[_xmppRoom addDelegate:self delegateQueue:dispatch_get_main_queue()];
[_xmppRoom fetchConfigurationForm];
}
- (void)xmppRoomDidCreate:(XMPPRoom *)sender{
NSLog(@"didCreateChat Room method called");
}
- (void)xmppRoomDidJoin:(XMPPRoom *)sender{
NSLog(@"xmppRoomDidJoin method called ");
}
- (void)xmppRoom:(XMPPRoom *)sender didFetchConfigurationForm:(NSXMLElement *)configForm{
NSXMLElement *newConfig = [configForm copy];
NSArray* fields = [newConfig elementsForName:@"field"];
for (NSXMLElement *field in fields) {
NSString *var = [field attributeStringValueForName:@"var"];
if ([var isEqualToString:@"muc#roomconfig_persistentroom"]) {
[field removeChildAtIndex:0];
[field addChild:[NSXMLElement elementWithName:@"value" stringValue:@"1"]];
}
}
[sender configureRoomUsingOptions:newConfig];
}
以上是创建和配置聊天室的代码 . 在调用此代码之前,我在 viewDidLoad
方法中连接 XMPP
. 但我无法创建聊天室 . 代码没有调用 XMPPRoom
Delegate
我做错了,如果我的代码中有任何错误,请纠正我 . 我甚至无法在openfire日志中发现任何错误 . 请帮我解决这个问题 . 任何帮助将不胜感激 .
1 回答
创建空间,如果已创建空间,您可以使用此代码轻松加入现有组