想知道这里的MBOBserver 发送失败的会不会到messageLost 里面,打开qos,只发现发送成功的,收到了,qos的通知, MBOBserver 失败的,未在messageLost里面找到. |
1111.png (36.59 KB, 下载次数: 2083)
也就是说重发的时候 框架是会自动生成一个新的Protocal对象,然后发送出去 可以这样理解吗? |
引用:吴佳同 发表于 2017-09-27 17:15 通常像手机qq、微信这样的IM,发送出去的消息会首先离线存储在本地的sqlite中,如果要重发根据消息id(就是MobileIMSDK里的fingerPrint指纹码)就可以拿到这个消息的数据。 |
明白了 也就是说在重试规定的次数 仍然发不出去,就会把 没发出去的Protocal 告诉 用户。 我还想问下,如果发现有List<Protocal> 没有发出去 ,我就可以 在界面上展示出不能发送的标志, 之后如果用户在界面上点击重新发送, 我是否需要把未成功发送的Protocal 保存起来? 当用户点了哪个重新发送,我就再重新发送那个Protocal ? 是否需要生成新的Protocal 再发送? 感谢jack |
先不说技术,我们来说说一个移动端IM的应用层表现,以手机QQ为例。 假设此时你的手机正打开qq,也连着WiFi,注意此时WiFi是好的,但恰好你家的宽带猫网络出了问题,上不了网。因为此时手机只知道连接着的网络没有断开(因为WiFi信号是好的),但它并不知道WiFi路由器到运营商的这条通路已经不能连通上。 你恰在此时尝时用手机QQ向某好友发送消息,过一会那条消息边上出出现一个红色的小图标,就像下图这样: MobileIMSDK的这个MessageQoSEventImpl.messagesLost(..)回调函数就是解决这个问题,它遇到上面手机QQ上消息发不出去时,就会通过这个回调告诉你刚才你发出的消息有几条是没有成功实时送达的,是否明白? |