wildfirechat / wfc_flutter_plugins

野火flutter插件,包含即时通讯和实时音视频插件
Other
35 stars 26 forks source link

消息撤回行为问题 #80

Closed liaovq closed 9 months ago

liaovq commented 9 months ago

普通群员撤回消息后,自己和别人(包括群主和管理员)可以看到撤回后的提示; 群主和管理员撤回消息后,只有自己可以看到撤回后的提示,其他人看到的依然是原消息内容;

imndx commented 9 months ago

demo 上是否可以复现?

liaovq commented 9 months ago

demo 复现不了,问题区别在于收到 RecallMessageEvent 撤回的 event 后,我们项目中拿到的新 message content 依然是 TextMessageContent,而 demo 中这个 event 拿到的是 RecallNotificationContent,其他调用方式与用法与 demo 无异

Snipaste_2023-11-08_17-27-56
imndx commented 9 months ago

不科学呀,你确认下,你撤回方撤回的消息的messageUidRecallMessageEvent里面的messageUid是否一致?另外,你是调用哪个接口进行撤回的?

liaovq commented 9 months ago

撤回接口掉的这个,消息是同一条,只是接收方触发 RecallMessageEvent 拿到的新 message 的 content 类型不对,数据我在造

Imclient.recallMessage(
  messageUid,
  () => debugPrint('recall message success'),
  (e) => Toast.showWarn('Delete failed'),
);
liaovq commented 9 months ago

用户A给B发消息后,A撤回调用 Imclient.recallMessage 的时候 messageUid 为

Snipaste_2023-11-08_19-20-47

但同时用户 B 收到 RecallMessageEvent 的时候,messageUid 不是同一个 ![Uploading Snipaste_2023-11-08_19-21-19.png…]()

imndx commented 9 months ago

你这样确认下,别人撤回消息,你杀进程,然后重启 app,在进入会话里面,看看会话里面的消息,显示的撤回提示,还是原始消息。

imndx commented 9 months ago

还有更新下你们代码,确保和demo 是一致的

liaovq commented 9 months ago

接上面的回复,撤回的消息是77762,用户B杀掉再进来 77762 是 text content ![Uploading Snipaste_2023-11-08_19-29-14.png…]()

liaovq commented 9 months ago
Snipaste_2023-11-08_19-29-14
liaovq commented 9 months ago

sdk 早上刚更新过,全部用 demo 里的 sdk 覆盖的我们项目里

imndx commented 9 months ago

已解决,原因是:

修改了撤回消息的存储属性,撤回消息的存储属性,一定不能修改:

const recallNotificationContentMeta = MessageContentMeta(
    MESSAGE_CONTENT_TYPE_RECALL,
    MessageFlag.PERSIST,
    RecallNotificationContentCreator);