删除消息后,卸载重装应用,删除的消息又出现了

郑天寿
• 阅读 85

问题原因: 如果开启了“多设备消息同步”服务,卸载重装应用,会触发“消息补偿”机制,默认会拉取到补偿时间内收发过的消息,如果删除的消息是在补偿时间内收发的,也会被拉取回来。解决思路: 1. 在删除消息后,向会话发一条自定义消息,作为清除消息的标识。 2. 当卸载重装后,如果在消息监听中监听到第 1 步中的自定义消息,再删除一次消息,如需删除会话,也要再执行一次。

点赞
收藏
评论区
推荐文章
Stella981 Stella981
2年前
Kafka设计
1.幂等消息为了解决重试导致的消息重复、乱序问题,kafka引入了幂等消息。幂等消息保证producer在一次会话内写入一个partition内的消息具有幂等性,可以通过重试来确保消息发布的ExactlyOnce语义。实现逻辑很简单:区分producer会话producer每次启动后,首先向broker申请一
Wesley13 Wesley13
2年前
(绝对有用)iOS获取UUID,并使用keychain存储
UDID被弃用,使用UUID来作为设备的唯一标识。获取到UUID后,如果用NSUserDefaults存储,当程序被卸载后重装时,再获得的UUID和之前就不同了。使用keychain存储可以保证程序卸载重装时,UUID不变。但当刷机或者升级系统后,UUID还是会改变的。但这仍是目前为止最佳的解决办法了,如果有更好的解决办法,欢迎留言。(我整理的解决办法的参
Stella981 Stella981
2年前
RabbitMQ小技巧
导读在使用RabbitMQ消息中间件时,因为消息的投递是异步的,默认情况下,RabbitMQ会删除那些无法路由的消息。为了能够检出消息是否顺利投递到队列,我们需要相应的处理机制。今天就来验证一下相关的验证机制。!RabbitMQ小技巧确定消息投递情况RabbitMQ小技巧确定消息投递情况(https://imgblog.csdnim
Stella981 Stella981
2年前
RabbitMQ 三种方式的TTL
TTL说明RabbitMQ支持三种方式PerQueueMessageTTL(为进入队列的每一条消息设置一个TTL)QueueTTL(队列的TTL,如果在设置的TTL时间内,没有消费者连接,没有消息发送,RabbitMQ会默认其是将要抛弃不用的,会考虑在TTL到期后删除掉该队列)PerM
Stella981 Stella981
2年前
RabbitMq学习(二)RabbitMQ的消息确认机制
一.为什么有消息确认机制在RabbitMq中,一个消息从产生到最终的消息接受,中间大致会有三个环节,首先是消息到达交换机、然后是消息通过交换机到达队列,最后消费者消费绑定的队列消息。 但是在这个过程中,如果出现网络或者系统的异常,就会导致消息不能被正常消费。如果不能正常消费消息,会造成两方面的问题。 1.1在服务端消息到
Stella981 Stella981
2年前
RabbitMQ 如何保证消息的可靠性
一条消费成功被消费经历了生产者MQ消费者,因此在这三个步骤中都有可能造成消息丢失。一消息生产者没有把消息成功发送到MQ1.1事务机制AMQP协议提供了事务机制,在投递消息时开启事务支持,如果消息投递失败,则回滚事务。自定义事务管理器@Configuration
郑天寿 郑天寿
3个月前
删除消息后,卸载重装应用,删除的消息又出现了
问题描述同时删除本地消息和服务端历史消息后,卸载重装应用或者换设备登录,删除的消息重新出现。原因分析针对单聊会话、群聊会话,如果通过任何接口以传入时间戳的方式删除远端消息,服务端默认不会删除对应的离线消息补偿(该机制仅会在打开多设备消息同步开关后生效)。此
郑天寿 郑天寿
5个月前
如何清理会话消息及清除 iOS IM SDK 缓存图片?
融云SDK中新增了deleteMessages方法,用于删除某个会话中的所有消息,同时会整理压缩数据库,减少占用空间,此方法不可频繁循环调用。方法如下:/!删除某个会话中的所有消息@paramconversationType会话类型,不支持聊天室@para
郑天寿 郑天寿
4个月前
即时通讯的核心功能点有哪些?
融云即时通讯的核心功能点包括以下几点:1、支持各种消息类型内置文本、表情、图片、语音、位置、动态表情、小视频、文件等各种消息类型,也可通过自定义消息功能定制自己的消息类型。2、消息云端存储开通单群聊、聊天室消息云端存储功能,在任何设备上打开应用均可同步拉取
郑天寿 郑天寿
4个月前
删除远端消息, 重进会话仍然取回已删除的消息
用户调用删除函数,服务器不会判断对应的sentTime是否存在,仅仅是使用sentTime直接进行消息删除,然后返回操作成功;用户删除远端消息时,需要保证sentTime的合法性(void)deleteRemoteMessage:(RCConversati