离开房间
[xmppRoom deactivate:xmppStream];
XMPPRoomDelegate的其他代理方法:
离开聊天室
- (void)xmppRoomDidLeave:(XMPPRoom *)sender
{
DDLogVerbose(@"%@: %@", THIS_FILE, THIS_METHOD);
}
新人加入群聊
- (void)xmppRoom:(XMPPRoom *)sender occupantDidJoin:(XMPPJID *)occupantJID
{
DDLogVerbose(@"%@: %@", THIS_FILE, THIS_METHOD);
}
有人退出群聊
- (void)xmppRoom:(XMPPRoom *)sender occupantDidLeave:(XMPPJID *)occupantJID
{
DDLogVerbose(@"%@: %@", THIS_FILE, THIS_METHOD);
}
有人在群里发言
- (void)xmppRoom:(XMPPRoom *)sender didReceiveMessage:(XMPPMessage *)message fromOccupant:(XMPPJID *)occupantJID
{
DDLogVerbose(@"%@: %@", THIS_FILE, THIS_METHOD);
}
5. 消息回执
这个是XEP-0184协议的内容。协议内容:
发送消息时附加回执请求

代码实现
NSString *siID = [XMPPStream generateUUID];
//发送消息
XMPPMessage *message = [XMPPMessage messageWithType:@"chat" to:jid elementID:siID];
NSXMLElement *receipt = [NSXMLElement elementWithName:@"request" xmlns:@"urn:xmpp:receipts"];
[message addChild:receipt];
[message addBody:@"测试"];
[self.xmppStream sendElement:message];
收到回执请求的消息,发送回执

代码实现
- (void)xmppStream:(XMPPStream *)sender didReceiveMessage:(XMPPMessage *)message
{
//回执判断
NSXMLElement *request = [message elementForName:@"request"];
if (request)
{
if ([request.xmlns isEqualToString:@"urn:xmpp:receipts"])//消息回执
{
//组装消息回执
XMPPMessage *msg = [XMPPMessage messageWithType:[message attributeStringValueForName:@"type"] to:message.from elementID:[message attributeStringValueForName:@"id"]];
NSXMLElement *recieved = [NSXMLElement elementWithName:@"received" xmlns:@"urn:xmpp:receipts"];
[msg addChild:recieved];
//发送回执
[self.xmppStream sendElement:msg];
}
}else
{
NSXMLElement *received = [message elementForName:@"received"];
if (received)
{
if ([received.xmlns isEqualToString:@"urn:xmpp:receipts"])//消息回执
{
//发送成功
NSLog(@"message send success!");
}
}
}
//消息处理
//...
}










