请选择 进入手机版 | 继续访问电脑版

默认
发表评论 6
想开发IM:买成品怕坑?租第3方怕贵?找开源自已撸?尽量别走弯路了... 找站长给点建议
[已回复] MobileIMSDK的onTransferMessage_RealTimeSendFaild回调总返回false?
之前一直都是好的,不知道从哪一天开始,发现发送离线消息服务端总是报离线消息没有保存成功,但是实际上服务器确实收到了消息并且已经保存,对方上线的时候也拉到了离线消息。
但是由于服务器返回错误信息因此前端总是显示发送失败,即使发送是成功的也是显示错误。

我一开始以为是我的离线消息保存逻辑出问题了

下面是我的onTransferMessage_RealTimeSendFaild里的处理

这是一开始的处理

这是一开始的处理

这里是我的handleOfflineMessage离线消息处理方法已经返回true了但还是报错了

报错

报错

然后我让它直接返回true,发现竟然还是报错……

然后直接返回true

然后直接返回true


报错

报错

这是为什么……

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

标签:MobileIMSDK
上一篇:[已回复] Android退出IM后报ClosedChannelException下一篇:[已回复] 求教基于MobileIMSDK的IM群消息发送时QOS的问题和疑问
推荐方案
评论 6
返回true就不会报这个log,你去取一下部署环境下的class文件,反编译一下,看看你的修改有没有生效。
签名: 春天了,可惜没太阳,天天阴天
引用:JackJiang 发表于 2021-03-22 15:31
返回true就不会报这个log,你去取一下部署环境下的class文件,反编译一下,看看你的修改有没有生效。

第一张报错的图是我直接返回true之前的处理,它有我自己的输出的log的,就是倒数第三句“离线消息处理结果 -- > true”,第二章报错没有我自己的log了,说明应该是生效了的,如果没有生效至少应该会有一句“离线消息处理出错”之类的呀…
引用:JackJiang 发表于 2021-03-22 15:31
返回true就不会报这个log,你去取一下部署环境下的class文件,反编译一下,看看你的修改有没有生效。

原因是拿到的protocal的isQoS是false,可是前端SendCommonData不是默认将QoS设置为true的嘛…
我直接在这个方法里把它set为true,虽然没有这个log了,但是报了一个伪应答包发送失败
引用:TinyCaviar 发表于 2021-03-22 15:39
第一张报错的图是我直接返回true之前的处理,它有我自己的输出的log的,就是倒数第三句“离线消息处理结 ...

很简单,你去下载原版的官方demo源码,你加一下log,在你同样的服务器环境下,看看它的表现是什么样。
从码云下载吧:https://gitee.com/jackjiang/MobileIMSDK,现在github国内上不去
签名: 春天了,可惜没太阳,天天阴天
引用:JackJiang 发表于 2021-03-22 17:50
很简单,你去下载原版的官方demo源码,你加一下log,在你同样的服务器环境下,看看它的表现是什么样。
...

demo没问题,我在本地的运行也没问题,protocal的QoS都是true,我把这个QoS手动设置为true现在问题解决了,但是没明白为什么为是false…学习学习源码…
十分感谢站长解答。
引用:TinyCaviar 发表于 2021-03-22 18:08
demo没问题,我在本地的运行也没问题,protocal的QoS都是true,我把这个QoS手动设置为true现在问题解决了 ...

实际上你帖子里描述的问题,应该跟qos参数没有关联。
我也没弄明白,你帖子里的问题为什么会出现,从正常逻辑来说,不应该出现,所以我怀疑是你的代码没有生效,但也没有证实到底是不是生效。

实际上你读一下sdk的源码,应该很容易理解这个方法的逻辑,一点也不复杂。我建议如果有兴趣的话,直接用sdk的源码,在你说的这种环境下调试一下,花不了多少时间
签名: 春天了,可惜没太阳,天天阴天
打赏楼主 ×
使用微信打赏! 使用支付宝打赏!

返回顶部