Xmpp IOS 多用户聊天。我没有找到接受群组邀请的方法?我如何接受收到的邀请

问题描述 投票:0回答:3

当我发送邀请时,会调用此函数,但我不明白应该使用哪一行代码来接受邀请。

我正在尝试创建一个多用户和多组邀请,也称为“确实收到消息”功能。

- (void)xmppMUC:(XMPPMUC *) sender roomJID:(XMPPJID *) roomJID didReceiveInvitation:(XMPPMessage *)message 
{ 
}
ios xmpp chatroom multiuserchat
3个回答
4
投票

这是您接受群组邀请的方式。您只需要激活您的 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];
}

2
投票

接受传入的邀请:

- (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];
}

0
投票

就我而言,我需要使用两个答案并像这样定义自我

@interface XMPPDelegate : NSObject <XMPPMUCDelegate>

激活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];
}
© www.soinside.com 2019 - 2024. All rights reserved.