我可以使用XMPPFramework創建一個MUC,並使用下面的代碼發送用戶邀請請求加入該會議室。接受聊天室邀請
// Creating
AppDelegate *dele =(AppDelegate *) [[UIApplication sharedApplication]delegate];
xmppRoom = [[XMPPRoom alloc] initWithRoomStorage:dele jid:[XMPPJID jidWithString:self.roomName] dispatchQueue:dispatch_get_main_queue()];
[xmppRoom addDelegate:dele delegateQueue:dispatch_get_main_queue()];
[xmppRoom activate:dele.xmppStream];
[xmppRoom joinRoomUsingNickname:self.myNick history:nil];
// Inviting
[xmppRoom inviteUser:[XMPPJID jidWithString:@"[email protected]"] withMessage:@"Come Join me"];
用戶「abc」如何知道他已收到邀請,他如何通過接受或拒絕對此做出反應?
我在XMPPFramework中找不到任何直接處理聊天室邀請的課程。 我的研究說,每當用戶收到的聊天室邀請,xmmppStream的委託方法被調用:
- (void)xmppStream:(XMPPStream *)sender didReceiveMessage:(XMPPMessage *)message
在這種消息,我檢查是否含有NSXMLElement名稱爲「邀請」,如果它包含的話,我送給用戶的回調。然後,我創建與用戶收到邀請的聊天室名稱相同的聊天室並進入新創建的聊天室。它工作正常,但安靜冗長,沒有安靜的效率。 我想知道是否有XMPPFramework中有一個類可用here,它可以單獨處理聊天室邀請。例如,檢測,接受和拒絕房間邀請。
我提取房間名稱代碼:
- (void)xmppStream:(XMPPStream *)sender didReceiveMessage:(XMPPMessage *)message
{
NSXMLElement * x = [message elementForName:@"x" xmlns:XMPPMUCUserNamespace];
NSXMLElement * invite = [x elementForName:@"invite"];
NSXMLElement * decline = [x elementForName:@"decline"];
NSXMLElement * directInvite = [message elementForName:@"x" xmlns:@"jabber:x:conference"];
NSString *msg = [[message elementForName:@"body"]stringValue];
NSString *from = [[[message attributeForName:@"from"]stringValue];
if (invite || directInvite)
{
[self createAndEnterRoom:from Message:msg];
return;
}
[self.delegate newMessageRecieved:msg];
}
維沙爾嗨裏面,我陷在類似的問題,能否請您讓我知道你有沒有發現任何解決方案或方法有了這個 ?謝謝 – Mangesh