Ich verwende diesen Code, um Server direkt abzufragen, aber ich bin mir nicht sicher, ob dies der beste Weg ist.
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];
Hoffe das hilft jemandem.
Wenn Sie diese Lösung übernehmen, müssen Sie übrigens eine Delegate -Methode analysieren:
- (BOOL)xmppStream:(XMPPStream *)sender didReceiveIQ:(XMPPIQ *)iq {
}
Ich Sache am besten ist es, die Methode zu analysieren, sobald die Verbindung begonnen hat:
- (void)xmppStream:(XMPPStream *)sender didReceivePresence:(XMPPPresence *)presence {
/* parse */
}
Dann überprüfen Sie
[[sender] from] domain]
Wenn "Konferenz" enthält. Dann können Sie denken, dass der Absender ein Zimmer ist und schließlich zum Beispiel zu NSmutablearray hinzufügen. Auch wenn ein neuer Raum erstellt wird, wird didreceivePresence aufgerufen, sodass Parser das neue Raum hinzufügt.
Also hast du:
NSMutableArray* rooms;
Ihre Methode wird:
-(NSMutableArray*)getRooms {
return _rooms;
}