Sono in grado di creare un MUC utilizzando XMPPFramework e inviare richieste di invito utente per entrare in quella stanza utilizzando il codice seguente.Accettazione invito chatroom
// 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"];
Come fa un utente "abc" sapere che ha ricevuto un invito e come può reagire ad esso sia da accettare o rifiutare?
Non sono riuscito a trovare alcuna classe in XMPPFramework che gestisce direttamente l'invito della chat room. La mia ricerca dice che ogni volta che un utente riceve un invito chatroom, metodo delegato di xmmppStream si chiama:
- (void)xmppStream:(XMPPStream *)sender didReceiveMessage:(XMPPMessage *)message
In questo messaggio, verificare se la contiene NSXMLElement con il nome "invito", e se contiene quindi invio una richiamata all'utente. Quindi creo la chat room con lo stesso nome del nome della chat da cui l'utente ha ricevuto l'invito ed entra in quella stanza appena creata. Funziona bene ma in modo silenzioso e non efficiente. Voglio sapere se esiste una classe in XMPPFramework disponibile here che potrebbe gestire separatamente l'invito alla chat room. Ad esempio, rilevare, accettare e rifiutare gli inviti alle camere.
Il mio codice per l'estrazione Nome camera:
- (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];
}
Ciao Vishal, mi sono bloccato nel problema simile, è possibile per favore fatemelo sapere Vedi qualche soluzione o approccio con questo ? Grazie – Mangesh