أستخدم هذا الرمز للاستعلام عن الخادم مباشرة ، لكنني لست متأكدًا من أن هذه هي أفضل طريقة.
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 ، لذلك سيضيف Parser الغرفة الجديدة.
لذلك ، لديك:
NSMutableArray* rooms;
ستكون طريقتك:
-(NSMutableArray*)getRooms {
return _rooms;
}