XMPPFramework IOS — реализация MUC

Ссылаясь на это, я реализую конфигурацию группового чата.

XMPPFramework — реализация группового чата (MUC)

Однако как участник, а не модератор, я не могу получить список участников. Я попытался прочитать несколько ответов стека с просьбой реализовать «muc#roomconfig_getmemberlist», однако делегат fetchconfiguration XMPPRoom не дает значение этого поля в обратном вызове.

Может ли кто-нибудь посоветовать, как именно это реализовать, а также как я могу получить список участников.


person Vicky Dhas    schedule 05.11.2015    source источник


Ответы (2)


Создайте комнату xmpp, используя

/**
 This fuction is used to setup room with roomId
 */
-(void)setUpRoom:(NSString *)ChatRoomJID
{
    if (!ChatRoomJID)
    {
        return;
    }
    // Configure xmppRoom
    XMPPRoomMemoryStorage *roomMemoryStorage = [[XMPPRoomMemoryStorage alloc] init];

    XMPPJID *roomJID = [XMPPJID jidWithString:ChatRoomJID];

    xmppRoom = [[XMPPRoom alloc] initWithRoomStorage:roomMemoryStorage jid:roomJID dispatchQueue:dispatch_get_main_queue()];

    [xmppRoom activate:xmppStream];
    [xmppRoom addDelegate:self delegateQueue:dispatch_get_main_queue()];

    NSXMLElement *history = [NSXMLElement elementWithName:@"history"];
    [history addAttributeWithName:@" maxchars" stringValue:@"0"];
    [xmppRoom joinRoomUsingNickname:xmppStream.myJID.user
                            history:history
                           password:nil];


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

}

/**
 This fuction is used configure new
 */
- (void)ConfigureNewRoom:(id)sender
{
    [xmppRoom configureRoomUsingOptions:nil];
    [xmppRoom fetchConfigurationForm];
    [xmppRoom fetchBanList];
    [xmppRoom fetchMembersList];
    [xmppRoom fetchModeratorsList];

}

После создания комнаты используйте методы Delegate комнаты Xmpp.

- (void)xmppRoom:(XMPPRoom *)sender occupantDidJoin:(XMPPJID *)occupantJID withPresence:(XMPPPresence *)presence


- (void)xmppRoom:(XMPPRoom *)sender occupantDidLeave:(XMPPJID *)occupantJID withPresence:(XMPPPresence *)presence

используя эти два метода делегирования, вы можете легко вести список пользователей, присоединившихся к MUC Room.

person samanvith    schedule 27.01.2016
comment
Спасибо, Саманвит, я могу получить этих делегатов и, следовательно, мне не нужно устанавливать это в конфигурации настроек для сервера как «muc#roomconfig_getmemberlist», поскольку по умолчанию он включен на сервере. хотя спасибо за информацию. - person Vicky Dhas; 28.01.2016

Это включенная по умолчанию конфигурация на сервере, поэтому ее не нужно настраивать, нам нужно настроить сервер, чтобы участники были даже в автономном режиме и покидали комнату. поэтому для выполнения требования, как и другие участники приложения чатов, которые должны отображаться.

person Vicky Dhas    schedule 28.01.2016