Jestem w stanie utworzyć MUC za pomocą XMPPFramework i wysłać zaproszenia do zaproszeń użytkownika, aby dołączyć do tego pokoju, używając poniższego kodu.Przyjmowanie zaproszenia do czatu
// 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"];
jaki sposób użytkownik „abc” wie, że otrzymał zaproszenie i jak może reagować na to albo przyjmując lub odrzucając?
Nie mogłem znaleźć żadnej klasy w XMPPFramework, która dotyczyłaby bezpośrednio zaproszenia do pokoju rozmów. Moje badania mówi, że gdy użytkownik otrzymuje zaproszenie pokoju, metoda delegata xmmppStream nazywa:
- (void)xmppStream:(XMPPStream *)sender didReceiveMessage:(XMPPMessage *)message
W tej wiadomości, sprawdzić, czy zawiera ona NSXMLElement z nazwą „zapraszać”, a jeżeli zawiera on wtedy wysyłam wywołanie zwrotne do użytkownika. Następnie utworzę czat z tą samą nazwą, co nazwa czatu, z którego użytkownik otrzymał zaproszenie, i wprowadzę nowo utworzony pokój. Działa dobrze, ale cicho długo i nie jest cicho wydajny. Chcę wiedzieć, czy dostępna jest klasa XMPPFramework here, która może obsługiwać zaproszenie do pokoju rozmów na czacie oddzielnie. Na przykład wykrywanie, akceptowanie i odrzucanie zaproszeń do pokoju.
Mój kod do wydobywania nazwę pomieszczenia:
- (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];
}
Cześć Vishal, siedzę w podobny problem, można proszę dać mi znać Czy znaleziono żadnego rozwiązania lub podejścia z tym ? Dzięki – Mangesh