XMPPFramework を使用して iphone でチャット アプリケーションを開発しています。すべてがうまく機能していますが、その時点で立ち往生しています。すべてのパブリック ルームのリストを取得したいのですが、XMPPFramework にメソッドが見つかりません。誰かがこの問題を解決するのを手伝ってくれますか?
1059 次
2 に答える
1
このコードを使用してサーバーに直接クエリを実行しますが、それが最善の方法かどうかはわかりません。
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 が呼び出されるため、パーサーが新しいルームを追加します。
だから、あなたは持っています:
NSMutableArray* rooms;
あなたの方法は次のとおりです。
-(NSMutableArray*)getRooms {
return _rooms;
}
于 2014-10-17T11:12:06.187 に答える