diff --git a/docs/document/android/message_retrieve.md b/docs/document/android/message_retrieve.md index f1563df64..7d0f537b6 100644 --- a/docs/document/android/message_retrieve.md +++ b/docs/document/android/message_retrieve.md @@ -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 本地数据库中获取会话在某个时间段内的全部消息数。 @@ -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>>() { + @Override + public void onSuccess(Map> 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>() { + @Override + public void onSuccess(List 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 版本开始,对于单个群组会话,你可以从本地获取指定成员(而非全部成员)发送的消息。 @@ -191,7 +233,7 @@ List messages = conversation.getAllMessages(); List messages = conversation.loadMoreMsgFromDB(startMsgId, pagesize); ``` -### 根据消息 ID 获取本地消息 +### 根据消息 ID 获取单个本地消息 你可以调用 `getMessage` 方法根据消息 ID 获取本地存储的指定消息。如果消息不存在会返回空值。 diff --git a/docs/document/android/releasenote.md b/docs/document/android/releasenote.md index b0d817d21..04cfffa99 100644 --- a/docs/document/android/releasenote.md +++ b/docs/document/android/releasenote.md @@ -2,6 +2,19 @@ +## 版本 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(开发版) ### 新增特性 diff --git a/docs/document/harmonyos/message_retrieve.md b/docs/document/harmonyos/message_retrieve.md index bdc94c829..6b891d4a1 100644 --- a/docs/document/harmonyos/message_retrieve.md +++ b/docs/document/harmonyos/message_retrieve.md @@ -16,7 +16,7 @@ - `ChatManager#fetchHistoryMessages`:根据 `searchOptions.from` 字段从服务器获取群组中指定成员(而非全部成员)发送的消息; - `Conversation#searchMessagesByKeywords`:从本地获取群组中指定成员(而非全部成员)发送的消息; - `Conversation#getAllMessages`:从本地读取指定会话的消息; -- `ChatManager#getMessage`:根据消息 ID 获取本地消息; +- `ChatManager#getMessage`:根据消息 ID 获取单个本地消息; - `Conversation#getMsgCountInRange`:获取本地数据库中单个会话在某个时间段内的全部消息数。 ## 前提条件 @@ -108,7 +108,7 @@ List messages = conversation.getAllMessages(); List messages = conversation.loadMoreMsgFromDB(startMsgId, pagesize); ``` -### 根据消息 ID 获取本地消息 +### 根据消息 ID 获取单个本地消息 你可以调用 `getMessage` 方法根据消息 ID 获取本地存储的指定消息。如果消息不存在会返回空值。 diff --git a/docs/document/ios/message_retrieve.md b/docs/document/ios/message_retrieve.md index 72f3e33a0..bb1835791 100644 --- a/docs/document/ios/message_retrieve.md +++ b/docs/document/ios/message_retrieve.md @@ -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:`:获取会话在一定时间内的消息数。 @@ -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 *> * _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 * _Nullable aMessages, EMError * _Nullable aError) { + if (aError) { + NSLog(@"Error getting messages: %@", aError.errorDescription); + } else { + // aMessages为查询到的消息 + } + }]; +``` + ### 从本地获取指定群成员发送的消息 自 iOS SDK 4.14.0 开始,对于单个群组会话,你可以从本地获取指定成员(而非全部成员)发送的消息。 @@ -115,7 +148,7 @@ EMConversation *conversation = [[EMClient sharedClient].chatManager getConversat NSArray *messages = [conversation loadMessagesStartFromId:startMsgId count:count searchDirection:MessageSearchDirectionUp]; ``` -### 根据消息 ID 获取本地消息 +### 根据消息 ID 获取单个本地消息 你可以调用 `getMessageWithMessageId` 方法根据消息 ID 获取本地存储的指定消息。如果消息不存在会返回空值。 diff --git a/docs/document/ios/releasenote.md b/docs/document/ios/releasenote.md index 28829bb66..31aa73dfc 100644 --- a/docs/document/ios/releasenote.md +++ b/docs/document/ios/releasenote.md @@ -2,6 +2,18 @@ +## 版本 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(开发版) ### 新增特性 diff --git a/docs/document/react-native/message_retrieve.md b/docs/document/react-native/message_retrieve.md index 07f517bc6..2a39f0e71 100644 --- a/docs/document/react-native/message_retrieve.md +++ b/docs/document/react-native/message_retrieve.md @@ -12,7 +12,7 @@ 环信即时通讯 IM React Native SDK 通过 `ChatManager` 和 `ChatConversation` 类实现对会话和消息的管理。 -- `getMessage`:根据消息 ID 获取本地消息; +- `getMessage`:根据消息 ID 获取单个本地消息; - `getMsgsWithMsgType`:获取本地指定会话中特定类型的消息; - `getMsgWithTimestamp` :获取本地指定会话中一定时间段内的消息; - `getMessageCountWithTimestamp`:获取本地会话指定时间段的消息数量。 @@ -90,7 +90,7 @@ ChatClient.getInstance() }); ``` -### 根据消息 ID 获取本地消息 +### 根据消息 ID 获取单个本地消息 你可以调用 `getMessage` 方法根据消息 ID 获取本地存储的指定消息。如果消息不存在会返回空值。 diff --git a/docs/document/unity/message_retrieve.md b/docs/document/unity/message_retrieve.md index e00e4817b..1601f4527 100644 --- a/docs/document/unity/message_retrieve.md +++ b/docs/document/unity/message_retrieve.md @@ -14,7 +14,7 @@ - `IChatManager.FetchHistoryMessagesFromServerBy` 根据 `FetchServerMessagesOption` 类分页获取服务器保存的指定会话中的消息。 - `Conversation.LoadMessages` 读取本地指定会话的消息。 -- `IChatManager.LoadMessage` 根据消息 ID 获取消息。 +- `IChatManager.LoadMessage` 根据消息 ID 获取单个消息。 - `Conversation.LoadMessagesWithMsgType` 获取本地单个会话中特定类型的消息。 - `Conversation.LoadMessagesWithTime` 获取本地单个会话中一定时间段内的消息。 - `Conversion#MessagesCount` 获取 SDK 本地数据库中会话某个时间段内的全部消息数。 @@ -119,7 +119,7 @@ conv.LoadMessages(startMsgId, pagesize, callback:new ValueCallBack )); ``` -### 根据消息 ID 获取本地消息 +### 根据消息 ID 获取单个本地消息 你可以调用 `LoadMessage` 方法根据消息 ID 获取本地存储的指定消息。如果消息不存在会返回空值。 diff --git a/docs/document/windows/message_retrieve.md b/docs/document/windows/message_retrieve.md index 58f7f96b0..96722ac96 100644 --- a/docs/document/windows/message_retrieve.md +++ b/docs/document/windows/message_retrieve.md @@ -121,9 +121,9 @@ conv.LoadMessages(startMsgId, pagesize, callback:new ValueCallBack )); ``` -### 根据消息 ID 获取本地消息 +### 根据消息 ID 获取单个本地消息 -你可以调用 `LoadMessage` 方法根据消息 ID 获取本地存储的指定消息。如果消息不存在会返回空值。 +你可以调用 `LoadMessage` 方法根据消息 ID 获取本地单个消息。如果消息不存在会返回空值。 ```csharp // msgId:要获取消息的消息 ID。 diff --git a/docs/product/product_dynamics.md b/docs/product/product_dynamics.md index 831454db3..572fd8987 100644 --- a/docs/product/product_dynamics.md +++ b/docs/product/product_dynamics.md @@ -2,6 +2,12 @@ ## 2025-06 +#### Android/iOS SDK 4.15.1 发版 + +| 动态名称 | 动态描述 | 发布时间 | 相关文档 | +| :----- | :------- | :---------------- | :---------------- | +| Android/iOS SDK 4.15.1 开发版发布 |
- 支持 [根据关键字从本地数据库中获取单个会话的消息](/document/android/message_retrieve.html#根据关键字获取本地会话中的消息),SDK 返回会话 ID 及消息 ID 列表。
- [根据消息 ID 从本地数据库获取单个或多个消息](/document/ios/message_retrieve.html#根据消息-id-获取单个或多个本地消息)。 | 2025-6-23 |
- [Android SDK 4.15.1 更新日志](/document/android/releasenote.html#版本-v4-15-1-dev-2025-6-23-开发版)
- [iOS SDK 4.15.1 更新日志](/document/ios/releasenote.html#版本-v4-15-1-dev-2025-6-23-开发版) | + #### Web SDK 4.15.1 发版 | 动态名称 | 动态描述 | 发布时间 | 相关文档 |