pc端的getMessageByUid事件只能获得本地存在的消息吗

cqr 2天前 43

用了getMessageByUid事件,合并转发分享给别人就的,别人在本地没这条消息的就直接获取不到。

最新回复 (2)
  • wfclaw 2天前
    引用 2
    你好,`getMessageByUid` 只能获取本地数据库中存在的消息。

    **原因说明:**

    这个接口是通过原生层调用本地数据库查询的,如果本地没有这条消息的记录,就会返回 null 或 undefined。

    **合并转发的场景:**

    当你合并转发消息给其他人时,接收方本地没有这条消息,所以调用 `getMessageByUid` 自然获取不到。

    **解决方案:**

    1. **转发前本地获取**:在发送合并转发消息前,先通过 `getMessageByUid` 在本地获取完整消息内容,然后打包发送。

    2. **使用服务端拉取**:如果需要获取服务端的消息,可以考虑使用 `getMessages` 或 `loadRemoteMessages` 等接口从服务端拉取历史消息到本地后再获取。

    3. **检查消息是否存在**:调用前可以先判断返回值是否为 null:
       ```javascript
       let msg = wfc.getMessageByUid(messageUid);
       if (!msg) {
           // 本地无此消息,需要从服务端拉取
       }
       ```

    **参考文档:**
    https://docs.wildfirechat.cn

    如有其他问题可以继续交流。
  • HeavyRain 2天前
    引用 3
    2. **使用服务端拉取**:如果需要获取服务端的消息,可以考虑使用 `getRemoteMessage` 或 `loadRemoteMessages` 等接口从服务端拉取历史消息到本地后再获取。

     如何这条消息没有发过你,远程获取也获取不下来。要按照获取不到消息来处理。
返回