默认
发表评论 9
想开发IM:买成品怕坑?租第3方怕贵?找开源自已撸?尽量别走弯路了... 找站长给点建议
[已回复]求教RainbowChat的android端自定义发送消息的问题
在IM登陆服务器重连成功后:我在个人聊天,通过MessageHelper.sendChatMessageExtend发送消息,返回结果是0,然后对方收到了,但是messagesLost这个方法提示丢包,说这个消息没有发送出去,怎么回事?

即时通讯网 - 即时通讯开发者社区! 来源: - 即时通讯开发者社区!

标签:RainbowChat
上一篇:[已回复] 求教同一账号、不同设备、同时登陆强制下线的优化方法下一篇:RainbowChat[专业版] 的v4.5版已发布!
推荐方案
评论 9

MessageHelper.sendChatMessageExtend这个方法是自已加的吧,把代码贴出来看看是怎么写的
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的代码来的
引用:cbbs 发表于 2019-06-21 13:41
[mw_shl_code=java,true]MessageHelper.sendChatMessageExtend(activity, currentChattingUser.getUser_uid ...

客户端有现成的发送 MT03_OF_CHATTING_MESSAGE 协议的方法,你为何要自已重新写一遍?
另外,把你写的这个方法是怎么调用的代码,也贴出来,尤其fingerPrint这个参数 是传的什么?
这个代码我都没有都重写过,直接调用demo过来的。
String fingerPring = Protocal.genFingerPrint();

这样生成。


引用:cbbs 发表于 2019-06-21 14:15
这个代码我都没有都重写过,直接调用demo过来的。[mw_shl_code=java,true]String fingerPring = Protocal.g ...

以你贴的代码完全看不出来会有什么情况。

建议这样来排查:下载我编译的APP,在你的手机,以及你所说的情况下,来复现,看看会不会出现。出现或不出现,记得及时反馈。

建议,把你复现的完整场景描述清楚。
这样说吧:我是基于demo上开发,发送信息接收消息这些代码,我没有改动过。当在消息列表出现
就是重连,然后通过发消息给对方,对方收到了,但是messagesLost这个方法提示丢包,对方发消息给我时,我就没有收到任何消息,显示发送失败。就是在显示网络出错时,A发送信息给B,B收到,但是B发消息给A,发送不成功,A收不到。

微信图片_20190624113019.png (4.08 KB, 下载次数: 1551)

微信图片_20190624113019.png
引用:cbbs 发表于 2019-06-24 11:36
这样说吧:我是基于demo上开发,发送信息接收消息这些代码,我没有改动过。当在消息列表出现
就是重连,然 ...

用我编译的原版:https://fir.im/vg2b,模拟你说的情况,最好拍个完整的视频,单独作为文件 qq上发给我,我看看你说的是什么情况
不能拿demo来测试丢包情况,现在这个项目后台进行一些修改。
MessageQoSListener监听原因,什么情况返回丢包?有这个方面的资料不?
引用:cbbs 发表于 2019-07-11 09:54
不能拿demo来测试丢包情况,现在这个项目后台进行一些修改。
MessageQoSListener监听原因,什么情况返回丢 ...

当你本的网络正常的情况下,在超时的时间内没有收到对方的消息ACK应答包时,就会被认定为“无法送达”,并在MessageQoSListener的回调中通知Lost包了。具体你可以看一下MobileIMSDK的源码逻辑
打赏楼主 ×
使用微信打赏! 使用支付宝打赏!

返回顶部