Xmpp IOS多用户聊天。 我没有找到接受小组邀请的方法? 我怎么能接受这个邀请函
当我发送邀请时,这个function被调用,但我无法理解接受邀请*应使用哪一行代码 。 我正在尝试创建一个多用户和多组邀请,也称为已接收消息function。
- (void)xmppMUC:(XMPPMUC *) sender roomJID:(XMPPJID *) roomJID didReceiveInvitation:(XMPPMessage *)message { }
这是您接受群组邀请的方式。 您只需要激活您的XMPPMUC协议,如下所示:
XMPPMUC * xmppMUC = [[XMPPMUC alloc] initWithDispatchQueue:dispatch_get_main_queue()]; [xmppMUC activate:_xmppStream]; [xmppMUC addDelegate:self delegateQueue:dispatch_get_main_queue()];
接受MUC的传入邀请:
- (void)xmppMUC:(XMPPMUC *)sender didReceiveRoomInvitation:(XMPPMessage *)message { NSXMLElement * x = [message elementForName:@"x" xmlns:XMPPMUCUserNamespace]; NSXMLElement * invite = [x elementForName:@"invite"]; if (!isEmpty(invite)) { NSString * conferenceRoomJID = [[message attributeForName:@"from"] stringValue]; [self joinMultiUserChatRoom:conferenceRoomJID]; } } - (void) joinMultiUserChatRoom:(NSString *) newRoomName { XMPPJID *roomJID = [XMPPJID jidWithString:newRoomName]; XMPPRoomMemoryStorage *roomMemoryStorage = [[XMPPRoomMemoryStorage alloc] init]; xmppRoom = [[XMPPRoom alloc] initWithRoomStorage:roomMemoryStorage jid:roomJID dispatchQueue:dispatch_get_main_queue()]; [xmppRoom activate:[self xmppStream]]; [xmppRoom addDelegate:self delegateQueue:dispatch_get_main_queue()]; [xmppRoom joinRoomUsingNickname:@"YOUR NICKNAME" history:nil]; }
接受来电邀请:
- (void)xmppMUC:(XMPPMUC *)sender roomJID:(XMPPJID *) roomJID didReceiveInvitation:(XMPPMessage *)message { XMPPRoom *mu = [[XMPPRoom alloc] initWithRoomStorage:xmpproomMstorage jid:roomJID dispatchQueue:dispatch_get_main_queue()]; [mu activate:xmppStream]; [mu addDelegate:self delegateQueue:dispatch_get_main_queue()]; self.toSomeOne = roomJID; [mu activate: self.xmppStream]; [mu fetchConfigurationForm]; [mu addDelegate:self delegateQueue:dispatch_get_main_queue()]; [mu joinRoomUsingNickname:xmppStream.YourJid.user history:nil password:@"Your Password"]; self.toSomeOne = roomJID; XMPPPresence *presence = [XMPPPresence presence]; [[self xmppStream] sendElement:presence]; [xmppRoster addUser:roomJID withNickname:roomJID.full]; [self goOnline]; }
在我的情况下,我需要使用两个答案并定义自己喜欢
@interface XMPPDelegate : NSObject
激活XMPPMUC协议如下:
XMPPMUC * xmppMUC = [[XMPPMUC alloc] initWithDispatchQueue:dispatch_get_main_queue()]; [xmppMUC activate:_xmppStream]; [xmppMUC addDelegate:self delegateQueue:dispatch_get_main_queue()];
收到加入消息:
- (void)xmppMUC:(XMPPMUC *)sender roomJID:(XMPPJID *) roomJID didReceiveInvitation:(XMPPMessage *)message { DDLogDebug(@"%@", message); XMPPRoomMemoryStorage *roomMemoryStorage = [[XMPPRoomMemoryStorage alloc] init]; XMPPRoom *xmppRoom = [[XMPPRoom alloc] initWithRoomStorage:roomMemoryStorage jid:roomJID dispatchQueue:dispatch_get_main_queue()]; [xmppRoom activate:xmppStream]; [xmppRoom addDelegate:self delegateQueue:dispatch_get_main_queue()]; [xmppRoom joinRoomUsingNickname: xmppStream.myJID.user history:nil password:password]; XMPPPresence *presence = [XMPPPresence presence]; [[self xmppStream] sendElement:presence]; [xmppRoster addUser:roomJID withNickname:roomJID.full]; [self goOnline]; }