XMPPFrameworkを使用してMUCを作成し、以下のコードを使用してその部屋に参加するためのユーザー招待リクエストを送信できます。チャットルームの招待を受け入れる
// Creating
AppDelegate *dele =(AppDelegate *) [[UIApplication sharedApplication]delegate];
xmppRoom = [[XMPPRoom alloc] initWithRoomStorage:dele jid:[XMPPJID jidWithString:self.roomName] dispatchQueue:dispatch_get_main_queue()];
[xmppRoom addDelegate:dele delegateQueue:dispatch_get_main_queue()];
[xmppRoom activate:dele.xmppStream];
[xmppRoom joinRoomUsingNickname:self.myNick history:nil];
// Inviting
[xmppRoom inviteUser:[XMPPJID jidWithString:@"[email protected]"] withMessage:@"Come Join me"];
ユーザは招待状を受け取ったことをどのようにして知っていますか?どのように受け入れたり辞退したりすることで対応できますか?
チャットルームの招待状に直接対処するXMPPFrameworkにクラスが見つかりませんでした。 私の研究は、ユーザーがチャットルームへの招待を受信するたびに、xmmppStreamのデリゲートメソッドが呼び出されることをこう述べています。そのメッセージには
- (void)xmppStream:(XMPPStream *)sender didReceiveMessage:(XMPPMessage *)message
、私はそれが名前「招待」とNSXMLElementが含まれており、それが含まれている場合、私は送っているかどうかを確認ユーザーへのコールバック。それから私は、チャットルームの名前と同じ名前のチャットルームを作成し、そこからユーザーは招待状を受け取り、その新しく作成されたルームに入ります。それはうまく動作しますが、静かで効率的ではありません。 XMPPFrameworkで利用できるクラスがあるかどうかを知りたい場合は、チャットルームの招待状を個別に処理できるhereがあります。たとえば、招待状の検出、受諾、および辞退など。
ルーム名を抽出するための私のコード:部屋の招待状については
- (void)xmppStream:(XMPPStream *)sender didReceiveMessage:(XMPPMessage *)message
{
NSXMLElement * x = [message elementForName:@"x" xmlns:XMPPMUCUserNamespace];
NSXMLElement * invite = [x elementForName:@"invite"];
NSXMLElement * decline = [x elementForName:@"decline"];
NSXMLElement * directInvite = [message elementForName:@"x" xmlns:@"jabber:x:conference"];
NSString *msg = [[message elementForName:@"body"]stringValue];
NSString *from = [[[message attributeForName:@"from"]stringValue];
if (invite || directInvite)
{
[self createAndEnterRoom:from Message:msg];
return;
}
[self.delegate newMessageRecieved:msg];
}
こんにちはヴィシャルメソッド内のコード
の下に追加し、私は同様の問題で立ち往生しています、あなたは私が知っているあなたが任意のソリューションやアプローチを見つけてみましょうくださいすることができこれとともに ?ありがとう – Mangesh