同样的代码其他用户每发一条消息在部分机型上,如HTC D816T上是正常的,onMessage回调一次;在部分机型?如三星SM-T530上,则被调用了两次,两次得到的messageId是一样的退出重进,重新安装结果都一样机型问题?怎么办呢一条消息回调几次,是SDK的问题么?吧?
你好,「被调用了两次」具体是指什么?onMessage() 方法被回调了 2 次?
是的呢,两次onMessage(),得到的消息messageId和消息内容都是一样的其他人只看到一条消息,他能看到两条一样的
请问是否还在其他机型上复现此问题?我需要复现看看是什么原因。
目前暂时没有 SM-T530 这款设备。
稍等,我问下哈,有玩家也有这问题手上目前就只有SM-T530是有问题的,其他都是正常的
有个使用“魅蓝X”的用户也有这问题他看到的消息都是重复的麻烦帮忙看看会是什么情况哈
我用魅族 M578CE,搭载 Flyme OS 4.5.4.1Q 系统的设备,测试正常,只会收到一次回调。
有没有可能是你们客户端的某个版本逻辑写重了?
是有考虑过这个可能性不过,最开始提到的两台设备HTC D816T和三星SM-T530测试时是用同一工程直接安装运行得到的结果应该…是不会差异,如果逻辑问题,应该是两台都会重复收到消息回调调试模式下onMessage的断点连续触发,消息内容一致。应该可以确定是调用了两次,而非回调一次,逻辑执行两次何时回调onMessage应该是SDK控制的所以上来问下是否与SDK有关😊
可以在复现问题断点触发时,记录下 messageId。
然后再发下 App ID、conversationID 和大概的时间点,我去比对下服务器日志。
App ID:pt0jH6rU08t56ATDKSw5qJ9c-gzGzoHszConversation ID:58a163ff61ff4b0058e6bae4Message ID:9OIZFA3LTeiFSqklRkVjfg时间:18:30忘记看秒了。。需要的话我再重新记录个
这个会话是暂态聊天室。
我这边推测是不是可能有 2 个 clientId 在线。
2 次回调 onMessage() 方法时,对应返回的 clientId 分别是?
哎呀,我的好像真是这个问题给添麻烦了呢,我去检查下哪里出问题了真是不好意思了呢
嗯…两个clientId,80_7293和80_7299目前还在查找问题所在暂时只找到一个调用AVIMClient getInstance(String clientId)的地方正常应该是使用80_7293,还没确定另一个是怎么出来的
@BinaryHB 对不起,我看错了,不小心把断点点没了正常的机子上,也是join前就有回调[捂脸]
收到消息正常,确实是回调的clientId是一样的而不正常的,是两个clientId
@BinaryHB只找到一个创建client的地方,断点触发也证实只创建了一次却收到了两个client的回调可有再一波神预测呢
同事改了部分代码,现在好像暂时没问题了我确认下是否是因为这部分改动把问题解决了哈
然而…我把同事的改动回滚了好像也是正常的了,好神奇莫名其妙解决了
两天前遇到过类似的情况,但是一台有问题的设备在我若干次调试运行之后莫名好了,当时就给搁置了2333
我建议你全局搜索一下 client.open() 和 client.close() 的操作,保证都成对出现。如果某个或者某几个 client 没 close 掉,就可能出现如上的异常问题。
昨天有问题的时候,我是调试运行=>进入游戏=>进入聊天室没切后台也没切换账号中间也试过先把游戏从手机上删了,一样的结果当时有在client.open的地方打了断点,只触发过一次
逻辑上在封装的登陆接口里,调用client.open之前先会判断是否已经有client,有的话先做一次close,等close成功了再做open操作