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