iOS的XMPPFramework简单介绍(实现及时通信)

2020-01-18 17:15:28于海丽

离开房间


[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协议的内容。协议内容:

发送消息时附加回执请求
xmppframework使用,xmppframework群聊,ios,xmppframework

代码实现


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];

收到回执请求的消息,发送回执
xmppframework使用,xmppframework群聊,ios,xmppframework

代码实现


 - (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!");
        } 
      } 
    } 
     
    //消息处理 
    //... 
  }