Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
46 changes: 44 additions & 2 deletions docs/document/android/message_retrieve.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,11 @@

- `EMChatManager#asyncFetchHistoryMessages`:根据 `EMFetchMessageOption` 类从服务端分页获取指定会话的历史消息;
- `EMChatManager#doAsyncFetchHistoryMessages`:从服务器获取指定群成员发送的消息;
- `EMChatManager#asyncLoadConversationMessagesWithKeyword`:根据关键字获取本地会话中的消息;
- `EMChatManager#asyncLoadMessages`:根据消息 ID 获取单个或多个本地消息;
- `EMConversation#asyncSearchMsgFromDB`:从本地获取指定群成员发送的消息;
- `EMConversation#getAllMessages/loadMoreMsgFromDB`:读取本地指定会话的消息;
- `EMChatManager#getMessage`:根据消息 ID 获取本地消息
- `EMChatManager#getMessage`:根据消息 ID 获取单个本地消息
- `EMChatManager#searchMsgFromDB(Type type, long timeStamp, int maxCount, String from, EMConversation.EMSearchDirection direction)`:获取本地存储的指定会话中特定类型的消息;
- `EMChatManager#searchMsgFromDB(long startTimeStamp, long endTimeStamp, int maxCount)`:获取一定时间段内本地指定会话中发送和接收的消息;
- `EMConversation#getAllMsgCount`:从 SDK 本地数据库中获取会话在某个时间段内的全部消息数。
Expand Down Expand Up @@ -169,6 +171,46 @@ int pageSize,String cursor,

```

### 根据关键字获取本地会话中的消息

自 SDK 4.15.1 版本开始,你可以通过设置关键词获取单个会话中的某些消息。SDK 返回会话 ID 及消息 ID 列表,消息 ID 根据你设置的 `direction` 参数按照消息时间戳的正序或倒序列明。

```java
String keyword="时间";
EMClient.getInstance().chatManager().asyncLoadConversationMessagesWithKeyword(keyword, -1, null, EMConversation.EMSearchDirection.UP, EMConversation.EMMessageSearchScope.CONTENT, new EMValueCallBack<Map<String, List<String>>>() {
@Override
public void onSuccess(Map<String, List<String>> value) {
EMLog.e(TAG, "asyncLoadConversationMessagesWithKeyword onSuccess value:" + value);
}

@Override
public void onError(int error, String errorMsg) {
EMLog.e(TAG,"asyncLoadConversationMessagesWithKeyword onError error:" + error + " errorMsg:" + errorMsg);
}
});

```


### 根据消息 ID 获取单个或多个本地消息

自 SDK 4.15.1 版本开始,你可以传入单个或多个消息 ID 获取单个本地会话中的消息。

```java
// messageIds:消息 ID 列表。每次最多可传入 20 个消息 ID。
EMClient.getInstance().chatManager().asyncLoadMessages(messageIds, conversationId, new EMValueCallBack<List<EMMessage>>() {
@Override
public void onSuccess(List<EMMessage> value) {
EMLog.e(TAG, "asyncLoadMessages onSuccess value:" + value);
}

@Override
public void onError(int error, String errorMsg) {
EMLog.e(TAG, "asyncLoadMessages onError error:" + error + " errorMsg:" + errorMsg);
}
});
```

### 从本地获取指定群成员发送的消息

自 4.14.0 版本开始,对于单个群组会话,你可以从本地获取指定成员(而非全部成员)发送的消息。
Expand All @@ -191,7 +233,7 @@ List<EMMessage> messages = conversation.getAllMessages();
List<EMMessage> messages = conversation.loadMoreMsgFromDB(startMsgId, pagesize);
```

### 根据消息 ID 获取本地消息
### 根据消息 ID 获取单个本地消息

你可以调用 `getMessage` 方法根据消息 ID 获取本地存储的指定消息。如果消息不存在会返回空值。

Expand Down
13 changes: 13 additions & 0 deletions docs/document/android/releasenote.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,19 @@

<Toc />

## 版本 V4.15.1 Dev 2025-6-23(开发版)

### 新增特性

1. [根据关键字从本地数据库中获取单个会话的消息](message_retrieve.html#根据关键字获取本地会话中的消息),SDK 返回会话 ID 及消息 ID 列表。
2. [根据消息 ID 从本地数据库获取单个或多个消息](message_retrieve.html#根据消息-id-获取单个或多个本地消息)。

### 修复

1. 修复当修改文本和自定义消息之外的消息时,`EMMessageListener#onMessageContentChanged` 回调中不返回修改的信息的问题。
2. 修复 [拉取漫游消息](message_retrieve.html#从服务器获取指定会话的消息) 时,设置为不保存消息时(`EMFetchMessageOption#setIsSave` 设置为 `false`)时,也会生成新的本地会话的问题。
3. 修复部分场景下 [发送 GIF 图片消息](message_send.html#发送-gif-图片消息) 失败的问题。

## 版本 V4.15.0 Dev 2025-5-21(开发版)

### 新增特性
Expand Down
4 changes: 2 additions & 2 deletions docs/document/harmonyos/message_retrieve.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
- `ChatManager#fetchHistoryMessages`:根据 `searchOptions.from` 字段从服务器获取群组中指定成员(而非全部成员)发送的消息;
- `Conversation#searchMessagesByKeywords`:从本地获取群组中指定成员(而非全部成员)发送的消息;
- `Conversation#getAllMessages`:从本地读取指定会话的消息;
- `ChatManager#getMessage`:根据消息 ID 获取本地消息
- `ChatManager#getMessage`:根据消息 ID 获取单个本地消息
- `Conversation#getMsgCountInRange`:获取本地数据库中单个会话在某个时间段内的全部消息数。

## 前提条件
Expand Down Expand Up @@ -108,7 +108,7 @@ List<EMMessage> messages = conversation.getAllMessages();
List<EMMessage> messages = conversation.loadMoreMsgFromDB(startMsgId, pagesize);
```

### 根据消息 ID 获取本地消息
### 根据消息 ID 获取单个本地消息

你可以调用 `getMessage` 方法根据消息 ID 获取本地存储的指定消息。如果消息不存在会返回空值。

Expand Down
37 changes: 35 additions & 2 deletions docs/document/ios/message_retrieve.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,11 @@

- `IEMChatManager#fetchMessagesFromServer`:根据 `EMFetchServerMessagesOption` 类从服务器分页获取指定会话的历史消息;
- `IEMChatManager#fetchMessagesFromServerBy`:从服务器获取群组中指定成员发送的消息;
- `IEMChatManager#loadConversationMessagesWithKeyword`:根据关键词获取本地会话中的单个或多个消息;
- `IEMChatManager#getMessages`:根据消息 ID 获取单个或多个本地消息;
- `EMConversation#loadMessagesWithKeyword`:从本地获取群组中指定成员发送的消息;
- `EMConversation#loadMessagesStartFromId`:从数据库中读取指定会话的消息;
- `IEMChatManager#getMessageWithMessageId`:根据消息 ID 获取本地消息
- `IEMChatManager#getMessageWithMessageId`:根据消息 ID 获取单个本地消息
- `EMConversation#loadMessagesWithType`:获取本地存储的指定会话中特定类型的消息;
- `EMConversation#loadMessagesFrom:to:count:completion:` 获取指定时间段内本地指定会话中发送和接收的消息;
- `EMConversation#getMessageCountStart:to:`:获取会话在一定时间内的消息数。
Expand Down Expand Up @@ -88,6 +90,37 @@ EMFetchServerMessagesOption* option = [[EMFetchServerMessagesOption alloc] init]
}];
```

### 根据关键字获取本地会话中的消息

自 SDK 4.15.1 开始,你可以通过设置关键字获取单个会话中的某些消息。SDK 返回会话 ID 及消息 ID 列表,消息 ID 根据你设置的 `aDirection` 参数按照消息时间戳的正序或倒序列明。

```objective-c
[EMClient.sharedClient.chatManager loadConversationMessagesWithKeyword:@"keyword" timestamp:-1 fromUser:@"" searchDirection:EMMessageSearchDirectionUp scope:EMMessageSearchScopeAll completion:^(NSDictionary<NSString *,NSArray<NSString *> *> * _Nullable aConversationMessages, EMError * _Nullable aError) {
if (aError) {
NSLog(@"Error loading messages: %@", aError.errorDescription);
} else {
// aConversationMessages为查询到的消息
}
}];

```


### 根据消息 ID 获取单个或多个本地消息

自 SDK 4.15.1 开始,你可以传入单个或多个消息 ID 获取单个本地会话中的消息。

```objective-c
// messageIds:消息 ID 列表。每次最多可传入 20 个消息 ID。
[EMClient.sharedClient.chatManager getMessages:@[@"messageId1", @"messageId2"] withConversationId:@"conversationId" completion:^(NSArray<EMChatMessage *> * _Nullable aMessages, EMError * _Nullable aError) {
if (aError) {
NSLog(@"Error getting messages: %@", aError.errorDescription);
} else {
// aMessages为查询到的消息
}
}];
```

### 从本地获取指定群成员发送的消息

自 iOS SDK 4.14.0 开始,对于单个群组会话,你可以从本地获取指定成员(而非全部成员)发送的消息。
Expand Down Expand Up @@ -115,7 +148,7 @@ EMConversation *conversation = [[EMClient sharedClient].chatManager getConversat
NSArray<EMChatMessage *> *messages = [conversation loadMessagesStartFromId:startMsgId count:count searchDirection:MessageSearchDirectionUp];
```

### 根据消息 ID 获取本地消息
### 根据消息 ID 获取单个本地消息

你可以调用 `getMessageWithMessageId` 方法根据消息 ID 获取本地存储的指定消息。如果消息不存在会返回空值。

Expand Down
12 changes: 12 additions & 0 deletions docs/document/ios/releasenote.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,18 @@

<Toc />

## 版本 V4.15.1 Dev 2025-6-23(开发版)

### 新增特性

1. [根据关键字从本地数据库中获取单个会话的消息](message_retrieve.html#根据关键字获取本地会话中的消息),SDK 返回会话 ID 及消息 ID 列表。
2. [根据消息 ID 从本地数据库获取单个或多个消息](message_retrieve.html#根据消息-id-获取单个或多个本地消息)。

### 修复

1. 修复当修改文本和自定义消息之外的消息时,`EMChatManagerDelegate#onMessageContentChanged` 回调中不返回修改的信息的问题。
2. 修复 [拉取漫游消息](message_retrieve.html#从服务器获取指定会话的消息) 时,设置为不保存消息时(`EMFetchServerMessagesOption#isSave` 设置为 `false`)时,也会生成新的本地会话的问题。

## 版本 V4.15.0 Dev 2025-5-21(开发版)

### 新增特性
Expand Down
4 changes: 2 additions & 2 deletions docs/document/react-native/message_retrieve.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@

环信即时通讯 IM React Native SDK 通过 `ChatManager` 和 `ChatConversation` 类实现对会话和消息的管理。

- `getMessage`:根据消息 ID 获取本地消息
- `getMessage`:根据消息 ID 获取单个本地消息
- `getMsgsWithMsgType`:获取本地指定会话中特定类型的消息;
- `getMsgWithTimestamp` :获取本地指定会话中一定时间段内的消息;
- `getMessageCountWithTimestamp`:获取本地会话指定时间段的消息数量。
Expand Down Expand Up @@ -90,7 +90,7 @@ ChatClient.getInstance()
});
```

### 根据消息 ID 获取本地消息
### 根据消息 ID 获取单个本地消息

你可以调用 `getMessage` 方法根据消息 ID 获取本地存储的指定消息。如果消息不存在会返回空值。

Expand Down
4 changes: 2 additions & 2 deletions docs/document/unity/message_retrieve.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@

- `IChatManager.FetchHistoryMessagesFromServerBy` 根据 `FetchServerMessagesOption` 类分页获取服务器保存的指定会话中的消息。
- `Conversation.LoadMessages` 读取本地指定会话的消息。
- `IChatManager.LoadMessage` 根据消息 ID 获取消息
- `IChatManager.LoadMessage` 根据消息 ID 获取单个消息
- `Conversation.LoadMessagesWithMsgType` 获取本地单个会话中特定类型的消息。
- `Conversation.LoadMessagesWithTime` 获取本地单个会话中一定时间段内的消息。
- `Conversion#MessagesCount` 获取 SDK 本地数据库中会话某个时间段内的全部消息数。
Expand Down Expand Up @@ -119,7 +119,7 @@ conv.LoadMessages(startMsgId, pagesize, callback:new ValueCallBack<List<Message>
));
```

### 根据消息 ID 获取本地消息
### 根据消息 ID 获取单个本地消息

你可以调用 `LoadMessage` 方法根据消息 ID 获取本地存储的指定消息。如果消息不存在会返回空值。

Expand Down
4 changes: 2 additions & 2 deletions docs/document/windows/message_retrieve.md
Original file line number Diff line number Diff line change
Expand Up @@ -121,9 +121,9 @@ conv.LoadMessages(startMsgId, pagesize, callback:new ValueCallBack<List<Message>
));
```

### 根据消息 ID 获取本地消息
### 根据消息 ID 获取单个本地消息

你可以调用 `LoadMessage` 方法根据消息 ID 获取本地存储的指定消息。如果消息不存在会返回空值。
你可以调用 `LoadMessage` 方法根据消息 ID 获取本地单个消息。如果消息不存在会返回空值。

```csharp
// msgId:要获取消息的消息 ID。
Expand Down
6 changes: 6 additions & 0 deletions docs/product/product_dynamics.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,12 @@

## 2025-06

#### Android/iOS SDK 4.15.1 发版

| 动态名称 | 动态描述 | 发布时间 | 相关文档 |
| :----- | :------- | :---------------- | :---------------- |
| Android/iOS SDK 4.15.1 开发版发布 | <br/> - 支持 [根据关键字从本地数据库中获取单个会话的消息](/document/android/message_retrieve.html#根据关键字获取本地会话中的消息),SDK 返回会话 ID 及消息 ID 列表。<br/> - [根据消息 ID 从本地数据库获取单个或多个消息](/document/ios/message_retrieve.html#根据消息-id-获取单个或多个本地消息)。 | 2025-6-23 | <br> - [Android SDK 4.15.1 更新日志](/document/android/releasenote.html#版本-v4-15-1-dev-2025-6-23-开发版)<br> - [iOS SDK 4.15.1 更新日志](/document/ios/releasenote.html#版本-v4-15-1-dev-2025-6-23-开发版) |

#### Web SDK 4.15.1 发版

| 动态名称 | 动态描述 | 发布时间 | 相关文档 |
Expand Down