2015-11-05 5 views
0

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

XMPPFramework - Implement Group Chat (MUC)

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

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

ответ

0

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

1

Создать 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 номеру

+0

Спасибо Samanvith, я могу получить этих делегатов и, следовательно, не нужно устанавливать это в настройках конфигурации на сервер как «muC# roomconfig_getmemberlist», поскольку он по умолчанию включен на сервере. спасибо за информацию, хотя. –

Смежные вопросы