XMPPFramework IOS - Внедрение MUC

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

XMPPFramework - внедрить групповой чат (MUC)

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

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

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

}

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

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


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

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

Другие вопросы по тегам