默认
发表评论 5
想开发IM:买成品怕坑?租第3方怕贵?找开源自已撸?尽量别走弯路了... 找站长给点建议
[已回复] 求助为MobileIMSDK的移动客户端发送消息增加时间戳的问题
因为移动客户端发消息时,带的时间是系统时间,如果当前的系统时间被修改,比如 修改成2012年的时间,那么对方用户在排序消息的时候会出错,请问有没有什么方法解决这个问题呢?我本来是想要在服务端改的,但是服务端是在消息已经发送到对方的时候才有回调函数可以存储消息记录的,所以不知道有什么好的解决方案,还请大佬带一带,非常感谢

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

标签:MobileIMSDK
上一篇:[已回复] 求助关于MobileIMSDK服务端离线消息重复存储的问题下一篇:[已回复] MobileIMSDK发成功,回调messagesBeReceived中如何判断对应是哪条UI上的消息?

本帖已收录至以下技术专辑

推荐方案
评论 5
如果你要这么考虑的话,有一个最保险的方法,那就是每条消息经过服务端中转时,为它加一个由服务端产生的时间戳。

如果要在服务端加时间戳,则 只需要修改两个地方:

  • 1)在Protocal这个协议包对象里(所有的消息都是用它来封装和传递的,这个应该理解吧)加一个时间戳字段;
  • 2)在ServerCoreHandler里,在 messageReceived 方法里,为收到的任何消息Protocal对象的时间戳字段进行赋值。

以上完成后。你的每条消息 Protocal对象,都会有这个服务端生成的时间戳了,至于你应用层怎么用这个时间戳,sdk这一级就不用管了,你就继续在应用层去使用就好了。

记住,在尝试进行以上代码修改前,先大致读一读MobileIMSDK的源码,虽然加时间戳很简单,也不需要什么全局逻辑,但通读一下代码,你也就能更放心地去改了,我是这个意思,没别的复杂事情。
引用:JackJiang 发表于 2019-11-11 12:17
如果你要这么考虑的话,有一个最保险的方法,那就是每条消息经过服务端中转时,为它加一个由服务端产生的时 ...

好的,非常感谢
引用:JackJiang 发表于 2019-11-11 12:17
如果你要这么考虑的话,有一个最保险的方法,那就是每条消息经过服务端中转时,为它加一个由服务端产生的时 ...

但是,这样的话,移动客户端的源码是不是也要修改?
引用:wzq1915414095 发表于 2019-11-11 12:57
但是,这样的话,移动客户端的源码是不是也要修改?

移动端改个毛,只要把Protocal.java更新给他就好了,不然它就读不到新加的字段。这些没什么复杂的,你理解一下代码。
引用:JackJiang 发表于 2019-11-11 15:02
移动端改个毛,只要把Protocal.java更新给他就好了,不然它就读不到新加的字段。这些没什么复杂的,你理 ...

好的,非常感谢
打赏楼主 ×
使用微信打赏! 使用支付宝打赏!

返回顶部