Я использую этот код для сервера запроса напрямую, но я не уверен, что это лучший способ.
XMPPIQ *iq = [[XMPPIQ alloc] initWithType:@"get"];
NSString* conferenceHost = [NSString stringWithFormat:@"conference.%@", _xmppStream.hostName];
[iq addAttributeWithName:@"from" stringValue:conferenceHost];
[iq addAttributeWithName:@"to" stringValue:_host];
DDXMLElement *query = [DDXMLElement elementWithName:@"query" xmlns:@"http://jabber.org/protocol/disco#items"];
[iq addChild:query];
[_xmppStream sendElement:iq];
Надеюсь, это кому -то поможет.
Кстати, если вы принимаете это решение, то вам нужно сделать некоторый анализ в методе делегата:
- (BOOL)xmppStream:(XMPPStream *)sender didReceiveIQ:(XMPPIQ *)iq {
}
Я лучший способ проанализировать метод после начала соединения:
- (void)xmppStream:(XMPPStream *)sender didReceivePresence:(XMPPPresence *)presence {
/* parse */
}
Затем вы проверяете
[[sender] from] domain]
Если содержит «конференцию». Тогда вы можете подумать, что отправитель - это комната, и, например, вы можете добавить, например, в NSMutableArray. Кроме того, когда будет создана новая комната, будет вызвана DidReceivePresence, поэтому Darser добавит новую комнату.
Так что у тебя есть:
NSMutableArray* rooms;
Ваш метод будет:
-(NSMutableArray*)getRooms {
return _rooms;
}