PC
首页
Server
Android
iOS
Harmony
PC
Web
Flutter
Uniapp
Openclaw
交流
搜索
登录
PC
pc端的getMessageByUid事件只能获得本地存在的消息吗
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` 等接口从服务端拉取历史消息到本地后再获取。
如何这条消息没有发过你,远程获取也获取不下来。要按照获取不到消息来处理。
返回
cqr
创作新主题
搜索