xmpp ejabberd を使用してチャット アプリケーションを開発しています。whats アプリに似た XMPP グループ チャットを開発したいと考えています。XMPP グループ チャットのセットアップは、私の XMPP サーバーで行われます。ルームの作成とルームへの参加に成功しています。しかし、私が参加している部屋が欲しいです。サーバーからグループのリストを取得するために次の iq を使用しています
NSString* server = @"conference.test.com";
XMPPJID *serverJID = [XMPPJID jidWithString:server];
XMPPIQ *iq = [XMPPIQ iqWithType:@"get" to:serverJID];
[iq addAttributeWithName:@"from" stringValue:[[APP_DELEGATE xmppStream] myJID].full];
NSXMLElement *query = [NSXMLElement elementWithName:@"query"];
[query addAttributeWithName:@"xmlns" stringValue:@"http://jabber.org/protocol/disco#items"];
[iq addChild:query];
[[APP_DELEGATE xmppStream] sendElement:iq];
上記のコードから、サーバーからグループのリストを取得していますが、参加したグループまたは招待を受けたグループのリストが必要です。
ルームを作成して参加するためのコードは次のとおりです。
-(void) CreateRoom:(NSString *)roomJid {
static dispatch_once_t queueCreationGuard;
static dispatch_queue_t queue;
dispatch_once(&queueCreationGuard, ^{
queue = dispatch_queue_create("com.something.myapp.backgroundQueue", 0);
});
XMPPRoomMemoryStorage *roomStorage = [[XMPPRoomMemoryStorage alloc] init];
XMPPJID *roomJID = [XMPPJID jidWithString:roomJid];
XMPPRoom *xmppRoom = [[XMPPRoom alloc] initWithRoomStorage:roomStorage jid:roomJID dispatchQueue:queue];
[xmppRoom activate:[self xmppStream]];
[xmppRoom addDelegate:self
delegateQueue:queue];
NSXMLElement *history = [NSXMLElement elementWithName:@"history"];
[history addAttributeWithName:@"maxstanzas" stringValue:@"0"];
[xmppRoom joinRoomUsingNickname:[self xmppStream].myJID.user
history:history
password:nil];
}
- (void)xmppRoomDidCreate:(XMPPRoom *)sender
{
NSLog(@"Room Created");
}
- (void)xmppRoomDidJoin:(XMPPRoom *)sender
{
NSLog(@"Room Joined");
}
誰かが解決策を持っている場合は、質問に答えてください。ありがとう