Android 阅后即焚实现方案

Android SDK 如何实现阅后即焚功能
发布时间: 2019-02-25 15:48

回答:

基于 IMLib/IMKit 实现消息阅后即焚方案(仅限单聊):

前提:阅后即焚 定义如下

对方收到消息并且已读后则双方同时对该消息启动倒计时操作,倒计时结束双方同时删除该消息(本地和服务器一起删除)。 上述描述属于理想状态,如果出现网络断开导致无法成功发出消息时则需特殊处理(消息重发等机制)。

以下方案仅适用于如上定义,如果对如上定义有不一致,请对应修改下面方案

接收方:

1:当某条消息(基本消息或者自定义消息,以下称burnMsg)属于阅后即焚消息并且已读时,自定义一个数据结构将该消息存进去,假设焚烧时间是10s。

2: 发出焚烧通知消息(自定义消息),通知消息发送方需要开始焚烧该消息。

eg:BurnNoticeMessage,类型为:MessagePersistent_NONE,消息中携带需要焚烧消息的 messageUId

3: 子线程开启一个定时器,每秒执行一次。定时器方法中遍历数据结构中所有存储的焚烧消息,将消息对应的焚烧时间减少一秒,并发出一个自定义通知来刷新对应的自定义消息显示倒计时时间,当焚烧时间为0时调用 deleteRemoteMessages 方法删除服务端以及本地消息。

4: 自定义消息显示时添加一个时间显示,当收到定时器方法发出的UI刷新通知时,根据通知携带的剩余焚烧秒数来刷新。

发送方:

1: 收到BurnNoticeMessage类型的焚烧通知消息,根据BurnNoticeMessage 消息中携带的 messageUId 查找到对应的消息并加入到自定义数据结构中重复 3->4 步骤焚烧该消息。


我对此仍有疑问!继续追问