参考此我正在实施群聊配置。XMPPFramework IOS - 实现MUC
XMPPFramework - Implement Group Chat (MUC)
但是作为参与者,而不是主持人,我无法获得成员列表。我尝试阅读多个堆栈答案,要求实现'muc#roomconfig_getmemberlist',但是XMPPRoom的fetchconfiguration委托没有在回调中提供此字段值。
任何人都可以建议,这是实现这个确切的方式也如何获取成员列表。
参考此我正在实施群聊配置。XMPPFramework IOS - 实现MUC
XMPPFramework - Implement Group Chat (MUC)
但是作为参与者,而不是主持人,我无法获得成员列表。我尝试阅读多个堆栈答案,要求实现'muc#roomconfig_getmemberlist',但是XMPPRoom的fetchconfiguration委托没有在回调中提供此字段值。
任何人都可以建议,这是实现这个确切的方式也如何获取成员列表。
这是默认在服务器上启用配置,所以只需不需要设置,我们必须定制服务器才能让成员离线并离开房间。因此可以像其他聊天应用程序成员一样显示。
创建使用
/**
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
房
谢谢Samanvith,我可以得到这些代表,因此不需要在服务器的设置配置中将其设置为'muc#roomconfig_getmemberlist',因为它默认在服务器中为ON。谢谢你的信息。 –