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

实在找不到问题所在。

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

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

你可以在正常和不正常的情况下,抓一下Log,分析下到底什么情况。
引用:JackJiang 发表于 2018-06-21 17:38
“如果登陆成功后就先向小米8推一条消息”这句话怎么理解?

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

那句意思就是,刚登陆上去之后,还没发第一次心跳之前,就用比如java客户端主动给小米8上发一条消息,这时候小米8收到消息,之后也能正常的心跳。如果登陆上去之后,什么都不做,那它就无法正常的心跳,就是第一条心跳也发送不出去。
引用:倾城夜幕 发表于 2018-06-21 17:45
那句意思就是,刚登陆上去之后,还没发第一次心跳之前,就用比如java客户端主动给小米8上发一条消息,这 ...

这个就很奇怪了,你把app重启一下,走一下这个过程,抓一下干净的log出来,看看Log里有没有什么奇怪的。
log你记得过滤一下,demo这个app之外的系统Log就别混进来了,不然太乱
引用:JackJiang 发表于 2018-06-21 18:23
这个就很奇怪了,你把app重启一下,走一下这个过程,抓一下干净的log出来,看看Log里有没有什么奇怪的。
...

刚才对服务端日志,发现服务端没有收到ProtocalType的FROM_CLIENT_TYPE_OF_RECIVED的消息。是应答包发送不成功吧。
引用:倾城夜幕 发表于 2018-06-21 18:37
刚才对服务端日志,发现服务端没有收到ProtocalType的FROM_CLIENT_TYPE_OF_RECIVED的消息。是应答包发送 ...

是的,查一下两种可能:
1)手机端有没有发出?
2)手机端发出了服务端却没有收到?
引用: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的消息已经存在于接收列表中,该消息重复了(原理可能是对方因未收到应答包而错误重传导致),更新收到时间戳哦.

登陆之后,日志打印的是这个,之后日志有“心跳线程执行中”,但收不到服务端返回的心跳。
这是手机发了但服务端没收到吧
引用:倾城夜幕 发表于 2018-06-22 09:52
2018-06-22 09:18:40.694 32067-32067/com.union.wxpt_android W/QoS4ReciveDaemon: 【IMCORE】【QoS接收 ...

你排查一下手机的网络,你先用手机ping服务端(你下载个工具),再用服务端ping手机。
且ping的时间长一点,观察网络是否稳定。

网络长连接通信程序必须要时刻双向通信正常才可以,哪一边通信不正常都不行

引用:JackJiang 发表于 2018-06-22 10:27
你排查一下手机的网络,你先用手机ping服务端(你下载个工具),再用服务端ping手机。
且ping的时间长一 ...

把ConfigEntity.localUDPPort赋值成0,而不是默认的7801就好了,但为什么之前7801的时候其他手机都可以而小米这个不行,是因为小米上其他app占了这个端口了么?
另外还有个问题,就是如果心跳线程开始但收不到服务端返回的心跳时,会出现app卡死的问题。
引用:倾城夜幕 发表于 2018-06-22 15:37
把ConfigEntity.localUDPPort赋值成0,而不是默认的7801就好了,但为什么之前7801的时候其他手机都可以而 ...

如果你app上已经运行了别的mobileimsdk app,默认肯定是端口冲突,因为默认用的是固定端口,你改成0就由系统自动分配了,不存在这个冲突了。

卡死的问题也是在小米8这手机吗?这手机的android版本是多少?能不能复现这个问题?
引用:JackJiang 发表于 2018-06-22 16:40
如果你app上已经运行了别的mobileimsdk app,默认肯定是端口冲突,因为默认用的是固定端口,你改成0就由 ...

卡死的也是小米8,是Android 8.1,就是当出现之前说到的这个无法正常发送心跳的问题时,就会卡死。其他手机因为没出现这个心跳的问题,不确定是否也会卡死。
引用:倾城夜幕 发表于 2018-06-22 17:33
卡死的也是小米8,是Android 8.1,就是当出现之前说到的这个无法正常发送心跳的问题时,就会卡死。其他手 ...

头一次听说这样的问题,你可以用源码调试一下,看看在这个机型和android版本上具体是什么情况
打赏楼主 ×
使用微信打赏! 使用支付宝打赏!

返回顶部