XMPP学习记录七:消息回执

原创 2013年12月05日 14:09:01

发送消息时附加回执请求

  1. <message  
  2.     from='northumberland@shakespeare.lit/westminster'  
  3.     id='richard2-4.1.247'  
  4.     to='kingrichard@royalty.england.lit/throne'>  
  5.   <body>My lord, dispatch; read o'er these articles.</body>  
  6.   <request xmlns='urn:xmpp:receipts'/>  
  7. </message>  

代码实现

  1. NSString *siID = [XMPPStream generateUUID];  
  2. //发送消息  
  3. XMPPMessage *message = [XMPPMessage messageWithType:@"chat" to:jid elementID:siID];  
  4. NSXMLElement *receipt = [NSXMLElement elementWithName:@"request" xmlns:@"urn:xmpp:receipts"];  
  5. [message addChild:receipt];  
  6. [message addBody:@"测试"];  
  7. [self.xmppStream sendElement:message];  


收到回执请求的消息,发送回执

  1. <message  
  2.     from='kingrichard@royalty.england.lit/throne'  
  3.     id='bi29sg183b4v'  
  4.     to='northumberland@shakespeare.lit/westminster'>  
  5.   <received xmlns='urn:xmpp:receipts' id='richard2-4.1.247'/>  
  6. </message>  

代码实现

  1. - (void)xmppStream:(XMPPStream *)sender didReceiveMessage:(XMPPMessage *)message  
  2. {     
  3.     //回执判断  
  4.     NSXMLElement *request = [message elementForName:@"request"];  
  5.     if (request)  
  6.     {  
  7.         if ([request.xmlns isEqualToString:@"urn:xmpp:receipts"])//消息回执  
  8.         {  
  9.             //组装消息回执  
  10.             XMPPMessage *msg = [XMPPMessage messageWithType:[message attributeStringValueForName:@"type"] to:message.from elementID:[message attributeStringValueForName:@"id"]];  
  11.             NSXMLElement *recieved = [NSXMLElement elementWithName:@"received" xmlns:@"urn:xmpp:receipts"];  
  12.             [msg addChild:recieved];  
  13.               
  14.             //发送回执  
  15.             [self.xmppStream sendElement:msg];  
  16.         }  
  17.     }else  
  18.     {  
  19.         NSXMLElement *received = [message elementForName:@"received"];  
  20.         if (received)  
  21.         {  
  22.             if ([received.xmlns isEqualToString:@"urn:xmpp:receipts"])//消息回执  
  23.             {  
  24.                 //发送成功  
  25.                 NSLog(@"message send success!");  
  26.             }  
  27.         }  
  28.     }  
  29.       
  30.     //消息处理  
  31.     //...  
  32. }  

相关文章推荐

xmpp xep-0184 消息回执

本人英语非常不好,这篇文章仅供参考。 转载请注明chuch

XMPPFrameWork IOS 开发(七)消息回执

消息回执

OpenFire源码学习之二十四:消息回执与离线消息(上)

在上一篇提到了4个问题,现在开始回答第三个第四个问题。由于篇幅问题。这里就设置成了上下两篇 消息回执 这个是第三个问题,如何做消息回执。 消息回执分为两种: 1、普通消息 2、延迟消...

openfire smack消息回执设置,处理掉包问题

在网络不稳定时,openfire容易出现掉包情况,原因是在客户端掉线时,openfire并不能马上知道客户端已经断线,至于要多久才能发现客户端断线,跟服务器端设置的Idle Connections 时...

asmack实现端到端的消息回执(XEP-0184: Message Delivery Receipts)

要想保证信息的传输,目前在smack/asmack + openfire架构上,我个人想到有两种实现方式: 1.端到端确保发送(类似短信)。 其实这个就是xmpp协议的XEP-0184: Messa...

openfire服务端消息回执插件(接收方离线时的情况),判断用户的在线状态

该插件主要处理当接收方处于离线状态时,服务器端发送回执给客户端。工作原理是首先对消息进行拦截,判断消息类型为chat时,查询接收方是否在线,如果在线直接忽略,如果是离线状态,则将消息存放到离线消息列表...

#即时通讯#实现消息已读回执功能的思路与实现

最近项目的聊天模块中增加了一个消息已读回执的功能,从技术上不是很难实现,但还是在这里记录一下,以便以后查阅。 所谓的消息已读回执,就是双方聊天时,如果对方看到了你新发的信息,这条消息在你这端就会标...

即时通信中消息回执及阅后即焚相关专利研究

即时通信中消息回执及阅后即焚相关专利研究在即时通讯中,消息的接收显示是其中重要的一部分,但其中还有一部分就是当好友更新头像或者姓名时本地也需要进行同步更新,这与消息接收后的显示还有些区别,这方面专利内...

openfire服务器端增加消息回执,解决openfire丢包问题

背景 我们都知道openfire丢包是比较严重的,要做即时通讯,肯定无法容忍这样的事情。...

XMPP学习3-IM即时消息

IM(Instant Meassge)即时消息
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:XMPP学习记录七:消息回执
举报原因:
原因补充:

(最多只允许输入30个字)