本文基于融云SDK讨论
基于 融云IMLib/IMKit 实现消息阅后即焚方案(仅限单聊):
前提:阅后即焚 定义如下
对方收到消息并且已读后则双方同时对该消息启动倒计时操作,倒计时结束双方同时删除该消息(本地和服务器一起删除)。 上述描述属于理想状态,如果出现网络断开导致无法成功发出消息时则需特殊处理(消息重发等机制)。
以下方案仅适用于如上定义,如果对如上定义有不一致,请对应修改下面方案
接收方:
1:当某条消息(内置消息或者自定义消息,以下称burnMsg
)属于阅后即焚消息并且已读时,自定义一个数据结构将该消息存进去,假设焚烧时间是10s。
2: 发出焚烧通知消息(自定义消息),通知消息发送方需要开始焚烧该消息。
eg:BurnNoticeMessage
,类型为:MessagePersistent_NONE
,消息中携带需要焚烧消息的 messageUId
。
3: 子线程开启一个定时器,每秒执行一次。定时器方法中遍历数据结构中所有存储的焚烧消息,将消息对应的焚烧时间减少一秒,并发出一个自定义通知来刷新对应的自定义消息显示倒计时时间,当焚烧时间为0时调用 deleteRemoteMessages
方法删除服务端以及本地消息。
4: 自定义消息显示时添加一个时间显示,当收到定时器方法发出的UI刷新通知时,根据通知携带的剩余焚烧秒数来刷新。
发送方:
1: 收到BurnNoticeMessage
类型的焚烧通知消息,根据BurnNoticeMessage
消息中携带的 messageUId
查找到对应的消息并加入到自定义数据结构中重复 3->4 步骤焚烧该消息。
版权声明:部分文章、图片等内容为用户发布或互联网整理而来,仅供学习参考。如有侵犯您的版权,请联系我们,将立刻删除。