引用:cbbs 发表于 2019-07-11 09:54 当你本的网络正常的情况下,在超时的时间内没有收到对方的消息ACK应答包时,就会被认定为“无法送达”,并在MessageQoSListener的回调中通知Lost包了。具体你可以看一下MobileIMSDK的源码逻辑 |
不能拿demo来测试丢包情况,现在这个项目后台进行一些修改。 MessageQoSListener监听原因,什么情况返回丢包?有这个方面的资料不? |
引用:cbbs 发表于 2019-06-24 11:36 用我编译的原版:https://fir.im/vg2b,模拟你说的情况,最好拍个完整的视频,单独作为文件 qq上发给我,我看看你说的是什么情况 |
引用:cbbs 发表于 2019-06-21 14:15 以你贴的代码完全看不出来会有什么情况。 建议这样来排查:下载我编译的APP,在你的手机,以及你所说的情况下,来复现,看看会不会出现。出现或不出现,记得及时反馈。 建议,把你复现的完整场景描述清楚。 |
这个代码我都没有都重写过,直接调用demo过来的。String fingerPring = Protocal.genFingerPrint(); 这样生成。 |
引用:cbbs 发表于 2019-06-21 13:41 客户端有现成的发送 MT03_OF_CHATTING_MESSAGE 协议的方法,你为何要自已重新写一遍? 另外,把你写的这个方法是怎么调用的代码,也贴出来,尤其fingerPrint这个参数 是传的什么? |
MessageHelper.sendChatMessageExtend(activity, currentChattingUser.getUser_uid(), msgBody, fingerPring); /** * 发送聊天消息(包括普通文本、图片消息、语音留言消息等)给指定user_id的用户. * <b>注意:</b>目前普通文本消息为了提升用户体验,提供QoS支持. * <p> * 说明:安卓2.3及以后系统中规定:发送网络数据须在单独的线程中,本方法默认没有为开发 * 者提供异步实现,所以开发者调用时需单独在代码中使用AsyncTask包装一遍哦。 * </p> * * @param context * @param user_id 当user_id=0时表示发送给服务器,否则发送给指定用户 * @param message 要发送的文本消息 * @param fingerPrint 指纹码 * @return */ public static int sendChatMessageExtend(Context context, String user_id, MsgBodyRoot message, String fingerPrint) { return SendDataHelper.sendMessageImpl(context, user_id , new Gson().toJson(message) , true, fingerPrint , UserProtocalsType.MT03_OF_CHATTING_MESSAGE); // 普通一对一聊天消息的报文头(聊天消息可能是:文本、图片、语音留言、礼物等) } 都是demo的代码来的 |
MessageHelper.sendChatMessageExtend这个方法是自已加的吧,把代码贴出来看看是怎么写的 |