J'utilise ce code pour interroger directement le serveur, mais je ne suis pas sûr que ce soit le meilleur moyen.
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];
J'espère que cela aide quelqu'un.
Soit dit en passant, si vous adoptez cette solution, vous devez faire une analyse de l'analyse dans le délégué:
- (BOOL)xmppStream:(XMPPStream *)sender didReceiveIQ:(XMPPIQ *)iq {
}
Je pense que la meilleure façon est d'analyser la méthode une fois que la connexion a commencé:
- (void)xmppStream:(XMPPStream *)sender didReceivePresence:(XMPPPresence *)presence {
/* parse */
}
Ensuite, vous vérifiez
[[sender] from] domain]
Si contient une «conférence». Ensuite, vous pouvez penser que l'expéditeur est une pièce et enfin vous pouvez ajouter à NSMutableArray, par exemple. De plus, lorsqu'une nouvelle salle sera créée, DiDeceivePresence sera appelée, donc Parser ajoutera la nouvelle salle.
Donc, vous avez:
NSMutableArray* rooms;
Votre méthode sera:
-(NSMutableArray*)getRooms {
return _rooms;
}