public interface MessageQoSEvent
当前MobileIMSDK的QoS机制支持全部的C2C、C2S、S2C共3种消息交互场景下的消息送达质量保证.
MobileIMSDK QoS机制的目标是:尽全力送达消息,即使无法送达也会通过回调告之应用层,尽最大可能避免因UDP协议天生的不可靠性而发生消息黑洞情况( 何为黑洞消息?即消息发出后发送方完全不知道到底送达了还是没有送达,而MobileIMSDK的QoS机制将会即时准确地告之发送方:“已送达”或者“没有送达”, 没有第3种可能)。
限定符和类型 | 方法和说明 |
---|---|
void |
messagesBeReceived(java.lang.String theFingerPrint)
消息已被对方收到的回调事件通知.
|
void |
messagesLost(java.util.ArrayList<net.x52im.mobileimsdk.server.protocal.Protocal> lostMessages)
消息未送达的回调事件通知.
|
void messagesLost(java.util.ArrayList<net.x52im.mobileimsdk.server.protocal.Protocal> lostMessages)
lostMessages
- 由MobileIMSDK QoS算法判定出来的未送达消息列表(此列表中的Protocal对象是原对象的clone(即原对象的深拷贝),请放心使用哦),应用层可通过指纹特征码找到原消息并可以UI上将其标记为”发送失败“以便即时告之用户void messagesBeReceived(java.lang.String theFingerPrint)
目前,判定消息被对方收到是有两种可能:
1) 对方确实是在线并且实时收到了;
2) 对方不在线或者服务端转发过程中出错了,由服务端进行离线存储成功后的反馈(此种情况严格来讲不能算是“已被收到”,但对于应用层来说,离线存储了的消息原则上就是已送达了的消息:因为用户下次登陆时肯定能通过HTTP协议取到)。
theFingerPrint
- 已被收到的消息的指纹特征码(唯一ID),应用层可据此ID来找到原先已发生的消息并可在UI是将其标记为”已送达“或”已读“以便提升用户体验