2016-11-11 5 views
0

Я пытаюсь получить список доступных групп чатов в моем Ejabbered server с помощью XMPPFramework. Ниже приведен мой код, чтобы получить список Chat Group.Получить список группы чатов, используя XMPPFramework

- (void) getChatGroupList{ 
    XMPPJID *servrJID = [XMPPJID jidWithString:@"conference.Server"]; 
    XMPPIQ *iq = [XMPPIQ iqWithType:@"get" to:servrJID]; 
    [iq addAttributeWithName:@"from" stringValue:[[self xmppStream] myJID].full]; 
    NSXMLElement *query = [NSXMLElement elementWithName:@"query"]; 
    [query addAttributeWithName:@"xmlns" stringValue:@"http://jabber.org/protocol/disco#items"]; 
    [iq addChild:query]; 
    [[self xmppStream] sendElement:iq]; 
} 

В ответ я получаю следующий XML внутри

<presence xmlns="jabber:client" from="[email protected]/38489493512952747921478847202003609" to="[email protected] Server/38489493512952747921478847202003609"><priority>24</priority><x xmlns="vcard-temp:x:update"><photo/></x><c xmlns="http://jabber.org/protocol/caps" hash="sha-1" node="https://github.com/robbiehanson/XMPPFramework" ver="VyOFcFX6+YNmKssVXSBKGFP0BS4="/></presence> 

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

+0

, в котором метод делегирования вы проверяете ответ ??? b'cus есть ответ, который можно получить в вашем 'didReceiveIQ', поэтому вам придется обрабатывать разные ответы, основанные на типе iQ. – CodeChanger

ответ

0

Вы поняли, что произошло?

Из того, что я вижу, ваш запрос выглядит нормально, но ответ должен быть другим запросом.

И не знаете, какую версию XMPPFramework вы используете, в последнюю очередь, есть класс XMPPMUC в XEP-0045. Вы можете позвонить discoverRoomsForServiceNamed, чтобы сделать то же самое. Просто убедитесь, что вы используете XMPPMUCDelegate, когда используете его.

+0

Хорошо. Я попытался реализовать код для MUC Как этот xmppMuc = [[XMPPMUC alloc] init]; [xmppMuc addDelegate: self delegateQueue: dispatch_get_main_queue()]; [xmppMuc discoveryRoomsForServiceNamed: @ "192.168.1.76"]; Но он никогда не доходит до didDiscoverRooms или failedToDiscoverRoomsForServiceNamed. Требуется любая другая настройка? –

+0

В MUC имя службы - xxx.host, по умолчанию - conference.host. И я думаю, вам нужно активировать (xmppStream) тоже – dichen

+0

На самом деле я новичок в XMPP и не получаю именно то, что вы говорите. Можете ли вы поделиться ссылкой на какой-либо пример, если у вас есть? Или любой документ, который я могу назвать? –