2015-11-05 50 views
0

参考此我正在实施群聊配置。XMPPFramework IOS - 实现MUC

XMPPFramework - Implement Group Chat (MUC)

但是作为参与者,而不是主持人,我无法获得成员列表。我尝试阅读多个堆栈答案,要求实现'muc#roomconfig_getmemberlist',但是XMPPRoom的fetchconfiguration委托没有在回调中提供此字段值。

任何人都可以建议,这是实现这个确切的方式也如何获取成员列表。

回答

0

这是默认在服务器上启用配置,所以只需不需要设置,我们必须定制服务器才能让成员离线并离开房间。因此可以像其他聊天应用程序成员一样显示。

1

创建使用

/** 
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 

的房间内使用委托方法后XMPP房间加入到MUC

+0

谢谢Samanvith,我可以得到这些代表,因此不需要在服务器的设置配置中将其设置为'muc#roomconfig_getmemberlist',因为它默认在服务器中为ON。谢谢你的信息。 –