默认
发表评论 11
想开发IM:买成品怕坑?租第3方怕贵?找开源自已撸?尽量别走弯路了... 找站长给点建议
[已回复] MobileIMSDK在小米8下发送心跳的疑问求助
用华为的手机测试都没有问题,登陆之后正常收发心跳。但用小米8测试时,显示登陆成功,但无法发送心跳(服务端没收到心跳),可是如果登陆成功后就先向小米8推一条消息的话,之后心跳就又能正常。

实在找不到问题所在。

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

上一篇:[已回复] MobileIMSDK发送消息长度有什么限制吗?下一篇:[已回复] MobileIMSDK的服务端主动发出的消息是否有重传机制?
推荐方案
评论 11
引用:JackJiang 发表于 2018-06-21 17:38
“如果登陆成功后就先向小米8推一条消息”这句话怎么理解?

你可以在正常和不正常的情况下,抓一下Log, ...

那句意思就是,刚登陆上去之后,还没发第一次心跳之前,就用比如java客户端主动给小米8上发一条消息,这时候小米8收到消息,之后也能正常的心跳。如果登陆上去之后,什么都不做,那它就无法正常的心跳,就是第一条心跳也发送不出去。
引用:JackJiang 发表于 2018-06-21 18:23
这个就很奇怪了,你把app重启一下,走一下这个过程,抓一下干净的log出来,看看Log里有没有什么奇怪的。
...

刚才对服务端日志,发现服务端没有收到ProtocalType的FROM_CLIENT_TYPE_OF_RECIVED的消息。是应答包发送不成功吧。
引用:JackJiang 发表于 2018-06-21 18:49
是的,查一下两种可能:
1)手机端有没有发出?
2)手机端发出了服务端却没有收到?

2018-06-22 09:18:40.694 32067-32067/com.union.wxpt_android W/QoS4ReciveDaemon: 【IMCORE】【QoS接收方】指纹为e97b389a-b86b-48f8-a418-7e2bf54b69a3的消息已经存在于接收列表中,该消息重复了(原理可能是对方因未收到应答包而错误重传导致),更新收到时间戳哦.

登陆之后,日志打印的是这个,之后日志有“心跳线程执行中”,但收不到服务端返回的心跳。
这是手机发了但服务端没收到吧
引用:JackJiang 发表于 2018-06-22 10:27
你排查一下手机的网络,你先用手机ping服务端(你下载个工具),再用服务端ping手机。
且ping的时间长一 ...

把ConfigEntity.localUDPPort赋值成0,而不是默认的7801就好了,但为什么之前7801的时候其他手机都可以而小米这个不行,是因为小米上其他app占了这个端口了么?
另外还有个问题,就是如果心跳线程开始但收不到服务端返回的心跳时,会出现app卡死的问题。
引用:JackJiang 发表于 2018-06-22 16:40
如果你app上已经运行了别的mobileimsdk app,默认肯定是端口冲突,因为默认用的是固定端口,你改成0就由 ...

卡死的也是小米8,是Android 8.1,就是当出现之前说到的这个无法正常发送心跳的问题时,就会卡死。其他手机因为没出现这个心跳的问题,不确定是否也会卡死。
打赏楼主 ×
使用微信打赏! 使用支付宝打赏!

返回顶部