历史消息
更新时间: 2024/11/18 14:27:31
云信 IM 支持对客户端本地和云信服务器存储历史消息进行查询、搜索以及删除操作。
本文介绍如何调用 NIM SDK 的接口实现历史消息管理。
支持平台
本文内容适用的开发平台或框架如下表所示:
Android | iOS | macOS/Windows | Web/uni-app/小程序 | Node.js/Electron | HarmonyOS | Flutter |
---|---|---|---|---|---|---|
✔️️️ | ✔️️️ | ✔️️️ | ✔️️️ | ✔️️️ | ✔️️️ | ✔️️️ |
前提条件
已在云信控制台开通 历史消息 功能,具体请参考 配置基础功能/全局功能。
云信 IM 支持云端历史消息,历史消息的存储时长在不同的套餐包中不同,各套餐包中的限制具体请参考 增值服务。
监听消息相关事件
在进行历史消息相关操作前,您可以提前注册监听相关事件。注册成功后,当对应事件发生时,SDK 会触发对应回调通知。
Android/iOS/macOS/Windows
调用 addMessageListener
方法注册消息相关监听器,监听消息删除回调事件和消息清空回调事件。
-
相关回调:
onMessageDeletedNotifications
:消息删除成功回调。当本地端或多端同步删除消息成功时会触发该回调。onClearHistoryNotifications
:消息清空成功回调。当本地端或多端同步清空消息成功时会触发该回调。
-
示例代码:
Androidjava
V2NIMMessageService v2MessageService = NIMClient.getService(V2NIMMessageService.class); V2NIMMessageListener messageListener = new V2NIMMessageListener() { @Override public void onMessageDeletedNotifications(List<V2NIMMessageDeletedNotification> messageDeletedNotifications) { } @Override public void onClearHistoryNotifications(List<V2NIMClearHistoryNotification> clearHistoryNotifications) { } }; v2MessageService.addMessageListener(messageListener);
iOSobjective-c
[[[NIMSDK sharedSDK] v2MessageService] addMessageListener:listener];
macOS/Windowscpp
V2NIMMessageListener listener; listener.onMessageDeletedNotifications = [](std::vector<V2NIMMessageDeletedNotification> messageDeletedNotification) { // receive message deleted notifications }; listener.onClearHistoryNotifications = [](std::vector<V2NIMClearHistoryNotification> clearHistoryNotification) { // receive clear history notifications }; messageService.addMessageListener(listener);
如需移除消息相关监听器,可调用
removeMessageListener
。Androidjava
V2NIMMessageService v2MessageService = NIMClient.getService(V2NIMMessageService.class); v2MessageService.removeMessageListener(messageListener);
iOSobjective-c
[[[NIMSDK sharedSDK] v2MessageService] removeMessageListener:listener];
macOS/Windowscpp
V2NIMMessageListener listener; // ... conversationService.addMessageListener(listener); // ... messageService.removeMessageListener(listener);
Web/uni-app/小程序/Node.js/Electron/HarmonyOS
调用 on("EventName")
方法注册消息相关监听器,监听消息删除回调事件和消息清空回调事件。
-
相关回调:
onMessageDeletedNotifications
:消息删除成功回调。当本地端或多端同步删除消息成功时会触发该回调。onClearHistoryNotifications
:消息清空成功回调。当本地端或多端同步清空消息成功时会触发该回调。
-
示例代码:
Web/uni-app/小程序typescript
nim.V2NIMMessageService.on("onMessageDeletedNotifications", function (messageDeletedNotifications: V2NIMMessageDeletedNotification[]) {}) nim.V2NIMMessageService.on("onClearHistoryNotifications", function (clearHistoryNotifications: V2NIMClearHistoryNotification[]) {})
如需移除消息相关监听,可调用
off("EventName")
。typescript
nim.V2NIMMessageService.off("onMessageDeletedNotifications", function (messageDeletedNotifications: V2NIMMessageDeletedNotification[]) {}) nim.V2NIMMessageService.off("onClearHistoryNotifications", function (clearHistoryNotifications: V2NIMClearHistoryNotification[]) {})
Node.js/Electrontypescript
v2.messageService.on("messageDeletedNotifications", function (messageDeletedNotifications: V2NIMMessageDeletedNotification[]) {}) v2.messageService.on("clearHistoryNotifications", function (clearHistoryNotifications: V2NIMClearHistoryNotification[]) {})
如需移除消息相关监听,可调用
off("EventName")
。typescript
v2.messageService.off("messageDeletedNotifications", function (messageDeletedNotifications: V2NIMMessageDeletedNotification[]) {}) v2.messageService.off("clearHistoryNotifications", function (clearHistoryNotifications: V2NIMClearHistoryNotification[]) {})
HarmonyOStypescript
nim.messageService.on("onMessageDeletedNotifications", function (messageDeletedNotifications: V2NIMMessageDeletedNotification[]) {}) nim.messageService.on("onClearHistoryNotifications", function (clearHistoryNotifications: V2NIMClearHistoryNotification[]) {})
如需移除消息相关监听,可调用
off("EventName")
。typescript
nim.messageService.off("onMessageDeletedNotifications", function (messageDeletedNotifications: V2NIMMessageDeletedNotification[]) {}) nim.messageService.off("onClearHistoryNotifications", function (clearHistoryNotifications: V2NIMClearHistoryNotification[]) {})
Flutter
调用 add
方法注册消息相关监听器,监听消息删除回调事件和消息清空回调事件。
-
相关回调:
onMessageDeletedNotifications
:消息删除成功回调。当本地端或多端同步删除消息成功时会触发该回调。onClearHistoryNotifications
:消息清空成功回调。当本地端或多端同步清空消息成功时会触发该回调。
-
示例代码:
dart
subsriptions.add(NimCore .instance.messageService.onMessageDeletedNotifications .listen((event) { //do something })); subsriptions.add(NimCore .instance.messageService.onClearHistoryNotifications .listen((event) { //do something }));
如需移除消息相关监听,可调用
cancel
。dart
subsriptions.forEach((subsription) { subsription.cancel(); });
查询历史消息
分页查询会话内所有历史消息
调用 getMessageList
方法分页查询指定会话的所有历史消息数据。
可以通过设置查询条件查询指定时间范围内具体消息类型的历史消息数据。
javaV2NIMMessageService v2MessageService = NIMClient.getService(V2NIMMessageService.class);
V2NIMConversationType conversationType = V2NIMConversationType.V2NIM_CONVERSATION_TYPE_P2P;
String conversationId = V2NIMConversationIdUtil.conversationId("xxx", conversationType);
// 根据实际情况配置
V2NIMMessageListOption listOption = V2NIMMessageListOption.V2NIMMessageListOptionBuilder.builder(conversationId)
.withAnchorMessage()
.withBeginTime()
.withDirection()
.withEndTime()
.withLimit()
.withMessageTypes()
.withStrictMode()
.build();
v2MessageService.getMessageList(listOption, new V2NIMSuccessCallback<List<V2NIMMessage>>() {
@Override
public void onSuccess(List<V2NIMMessage> v2NIMMessages) {
// TODO: 成功
}
}, new V2NIMFailureCallback() {
@Override
public void onFailure(V2NIMError error) {
// TODO: 失败
}
});
objective-cV2NIMMessageListOption *option = [[V2NIMMessageListOption alloc] init];
[[[NIMSDK sharedSDK] v2MessageService] getMessageList:option
success:^(NSArray<V2NIMMessage *> * _Nonnull result) {
// result 返回消息数组
}
failure:^(V2NIMError * _Nonnull error) {
// error 包含错误原因
}];
cppV2NIMMessageListOption option;
option.limit = 10;
messageService.getMessageList(
option,
[](std::vector<V2NIMMessage> messages) {
for (auto&& message : messages) {
// do something
}
},
[](V2NIMError error) {
// get message list failed, handle error
}
);
typescripttry {
const res: V2NIMMessage[] = await nim.V2NIMMessageService.getMessageList({
"conversationId": "cjhz1|1|cs6",
"limit": 50,
"anchorMessage": {
"messageServerId": "111",
"createTime": 0
},
"direction": 0
});
// TODO: Success
} catch (err) {
// TODO: Error
}
typescripttry {
const messages = await v2.messageService.getMessageList({
conversationId: 'conversationId'
})
// todo Success
} catch (err) {
// todo error
}
typescripttry {
const res: V2NIMMessage[] = await nim.messageService.getMessageList({
"conversationId": "cjhz1|1|cs6",
"limit": 50,
"anchorMessage": {
"messageServerId": "111",
"createTime": 0
},
"direction": 0
})
// todo Success
} catch (err) {
// todo error
}
dartawait NimCore.instance.messageService.getMessageList(option);
批量查询指定的历史消息列表
调用 getMessageListByIds
方法根据消息客户端 ID 查询指定的历史消息。
- 该接口只在本地数据库中查询。
- Web 端不支持该接口。
javaV2NIMMessageService v2MessageService = NIMClient.getService(V2NIMMessageService.class);
List<String> messageClientIds = new ArrayList<>();
// TODO
// messageClientIds.add("xxx");
v2MessageService.getMessageListByIds(messageClientIds,
new V2NIMSuccessCallback<List<V2NIMMessage>>() {
@Override
public void onSuccess(List<V2NIMMessage> v2NIMMessages) {
}
},
new V2NIMFailureCallback() {
@Override
public void onFailure(V2NIMError error) {
}
});
objective-cNSArray *messageClientIds = @[@"messageClientId1",@"messageClientId2",@"messageClientIdn"];
[[[NIMSDK sharedSDK] v2MessageService] getMessageListByIds:messageClientIds
success:^(NSArray<V2NIMMessage *> * _Nonnull result) {
// result 返回消息数组
}
failure:^(V2NIMError * _Nonnull error) {
// error 包含错误原因
}];
cppstd::vector<std::string> messageClientIds;
// ...
messageService.getMessageListByIds(
messageClientIds,
[](std::vector<V2NIMMessage> messages) {
for (auto&& message : messages) {
// do something
}
},
[](V2NIMError error) {
// get message list by ids failed, handle error
});
typescriptconst messageIds: string[] //消息id数组
const result = await nim.messageService.getMessageListByIds(messageIds)
dartawait NimCore.instance.messageService.getMessageListByIds(messageClientIds);
分页查询云端 Thread 历史消息
调用 getThreadMessageList
方法根据 Thread 根消息分页获取所有 Thread 子消息。
为避免触发请求频控,若云端会话数据同步已完成(收到 onSyncFinished
),建议您改用 getLocalThreadMessageList
方法获取本地 Thread 历史消息列表。
示例代码如下:
JavaV2NIMThreadMessageListOption option = new V2NIMThreadMessageListOption();
// messageRefer field is mandatory and is used to determine a root message. It can be filled directly with a message body or a V2NIMMessageRefer object can be constructed based on the message body's fields.
option.setMessageRefer(rootMessageRefer);
// The following fields are optional
// beginTime and endTime define the time range of the query. Fill with 0 to indicate no restriction.
option.setBeginTime(0L);
option.setEndTime(0L);
// For the first page, leave this field blank. When paging, fill in the serverId of the message closest to the target page's current page. For example, anchorMessage represents the earliest message on the current page, allowing the current request to page backward (earlier events). Query 20 messages earlier than anchorMessage (excluding itself).
option.setExcludeMessageServerId("123456");
// Maximum number of messages to be retrieved
option.setLimit(20);
// Query direction, default is V2NIM_QUERY_DIRECTION_DESC
option.setDirection(V2NIMQueryDirection.V2NIM_QUERY_DIRECTION_DESC);
NIMClient.getService(V2NIMMessageService.class).getThreadMessageList(option, v2NIMThreadMessageListResult -> {
//Query successful
}, error -> {
//Query failed
});
Objective-CV2NIMThreadMessageListOption *option = [[V2NIMThreadMessageListOption alloc] init];
// messageRefer 字段必填,此字段用于确定一条根消息。可以直接填消息体,也可以根据消息体的字段,构造一个 V2NIMMessageRefer 对象
option.messageRefer = rootMessage;
//下面的字段均为可选字段
// beginTime 和 endTime 划定了查询的时间范围,填 0 表示不做限制。
option.beginTime = 0;
option.endTime = 1715331571.927; //anchorMessage.createTime
// 第一页不填,翻页时填写距离目标页最近的当前页的消息的 serverId。
// 如 anchorMessage 表示当前页中最早的一条消息,则当前请求可以实现向前(事件更早)翻页。查询比 anchorMessage 早(不包括自己)的 20 条消息
option.excludeMessageServerId = @"123456"; //anchorMessage.messageServerId
// 查询出的消息条数上限
option.limit = 20;
// 查询方向。DESC 为按时间戳从大到小查询
option.direction = V2NIM_QUERY_DIRECTION_DESC;
// 调用接口查询消息
[[NIMSDK sharedSDK].v2MessageService getThreadMessageList:option success:^(V2NIMThreadMessageListResult *result) {
// 查询成功
} failure:^(V2NIMError *error) {
// 查询失败
}];
C++V2NIMTheadMessageListOption threadMessageListOption;
// ...
messageService.getThreadMessageList(
threadMessageListOption,
[](V2NIMThreadMessageListResult response) {
// do something
},
[](V2NIMError error) {
// get message list by refers failed, handle error
});
TypeScripttry {
const result = await nim.V2NIMMessageService.getThreadMessageList({
messageRefer: {
"senderId": "account1",
"receiverId": "account2",
"messageClientId": "21a7e3d43a7afdf52e11f61d9753f99c",
"messageServerId": "231689624",
"createTime": 1715222453441,
"conversationType": 1,
"conversationId": "account1|1|account2"
},
"limit": 50
})
} catch(err) {
console.error('getAddApplicationUnreadCount Error:', err)
}
typescripttry {
const result = await v2.messageService.getThreadMessageList({
messageRefer: {
"senderId": "account1",
"receiverId": "account2",
"messageClientId": "21a7e3d43a7afdf52e11f61d9753f99c",
"messageServerId": "231689624",
"createTime": 1715222453441,
"conversationType": 1,
"conversationId": "account1|1|account2"
},
"limit": 50
})
} catch(err) {
console.error('getAddApplicationUnreadCount Error:', err)
}
TypeScripttry {
const result = await nim.messageService.getThreadMessageList({
messageRefer: {
"senderId": "account1",
"receiverId": "account2",
"messageClientId": "21a7e3d43a7afdf52e11f61d9753f99c",
"messageServerId": "231689624",
"createTime": 1715222453441,
"conversationType": 1,
"conversationId": "account1|1|account2"
},
"limit": 50
})
} catch(err) {
console.error('getAddApplicationUnreadCount Error:', err)
}
dartawait NimCore.instance.messageService.getThreadMessageList(threadMessageListOption);
查询本地 Thread 历史消息
调用 getLocalThreadMessageList
方法根据 Thread 根消息获取所有本地 Thread 子消息。
示例代码如下:
Java// messageRefer 字段用于确定一条根消息。可以直接填消息体,也可以根据消息体的字段,构造一个 V2NIMMessageRefer 对象
V2NIMMessageRefer messageRefer = rootMessage;
NIMClient.getService(V2NIMMessageService.class).getLocalThreadMessageList(messageRefer, v2NIMThreadMessageListResult -> {
//Query successful
}, error -> {
//Query failed
});
Objective-C// messageRefer 字段用于确定一条根消息。可以直接填消息体,也可以根据消息体的字段,构造一个 V2NIMMessageRefer 对象
V2NIMMessageRefer *messageRefer = rootMessage;
// 调用接口查询消息
[[NIMSDK sharedSDK].v2MessageService getLocalThreadMessageList:messageRefer success:^(V2NIMThreadMessageListResult *result) {
// 查询成功
} failure:^(V2NIMError *error) {
// 查询失败
}];
C++V2NIMMessageRefer messageRefer;
// ...
messageService.getLocalThreadMessageList(
messageRefer,
[](V2NIMThreadMessageListResult response) {
// do something
},
[](V2NIMError error) {
// get message list by refers failed, handle error
});
Typescriptconst messageRefer = {
"senderId": "account1",
"receiverId": "account2",
"messageClientId": "21a7e3d43a7afdf52e11f61d9753f99c",
"messageServerId": "231689624",
"createTime": 1715222453441,
"conversationType": 1,
"conversationId": "account1|1|account2"
} as V2NIMMessageRefer
const result = await nim.messageService.getLocalThreadMessageList(messageRefer)
dartawait NimCore.instance.messageService.getLocalThreadMessageList(messageRefer);
删除历史消息
云信 IM 的删除消息接口,可通过配置 onlyDeleteLocal
参数选择是否只删除本地消息。
-
只删除本地,本地会将该消息标记为删除,后续查询本地消息时会过滤该消息,界面不展示,卸载重装会再次显示。
-
删除本地的同时删除云端对应的消息,删除后消息无法恢复。
删除云端消息功能需要在云信控制台单独开通,只有开通后,该功能才能使用。若未开通,请参考 开启功能项 进行开通。
删除指定单条消息
调用 deleteMessage
方法删除指定的单条消息。
删除指定消息后,若消息还未读,则应用总消息未读数会减 1。
若需要删除的消息处于未发送成功状态,则只删除本地消息,不涉及云端消息,因此不会触发多端同步。删除本地消息的同时删除对应的云端消息后,会多端同步该操作。
本地或云端删除消息成功后,SDK 会返回删除成功回调 onMessageDeletedNotifications
。
javaV2NIMMessageService v2MessageService = NIMClient.getService(V2NIMMessageService.class);
// V2NIMMessage deleteMessage = ; // 被删除的消息
v2MessageService.deleteMessage(deleteMessage, "xxx", false,
new V2NIMSuccessCallback<Void>() {
@Override
public void onSuccess(Void unused) {
}
},
new V2NIMFailureCallback() {
@Override
public void onFailure(V2NIMError error) {
}
});
objective-c[[[NIMSDK sharedSDK] v2MessageService] deleteMessage:message
serverExtension:@"json String"
onlyDeleteLocal:YES
success:^{
}
failure:^(V2NIMError * _Nonnull error) {
//error 包含错误原因
}];
cppV2NIMMessage message;
// ...
messageService.deleteMessage(
message,
"serverExtension",
false,
[]() {
// delete message succeeded
},
[](V2NIMError error) {
// delete message failed, handle error
}
);
typescripttry {
await nim.V2NIMMessageService.deleteMessage(message, 'serverExtension');
// todo: Success
} catch (err) {
// todo: error
}
typescripttry {
await v2.messageService.deleteMessage(message, 'serverExtension', true)
// todo Success
} catch (err) {
// todo error
}
typescripttry {
await nim.messageService.deleteMessage(message, 'serverExtension')
// todo Success
} catch (err) {
// todo error
}
dartawait NimCore.instance.messageService.deleteMessage(message, serverExtension, onlyDeleteLocal);
批量删除指定消息列表
调用 deleteMessages
方法删除指定会话内的消息列表。
删除指定消息列表后,若消息还未读,则应用总消息未读数会减去对应的删除的消息数量。
若需要删除的消息处于未发送成功状态,则只删除本地消息,不涉及云端消息,因此不会触发多端同步。删除本地消息的同时删除对应的云端消息后,会多端同步该操作。
本地或云端删除消息成功后,SDK 会返回删除成功回调 onMessageDeletedNotifications
。
javaV2NIMMessageService v2MessageService = NIMClient.getService(V2NIMMessageService.class);
// List<V2NIMMessage> messages = ; // 被删除的消息
v2MessageService.deleteMessages(messages, "xxx", false,
new V2NIMSuccessCallback<Void>() {
@Override
public void onSuccess(Void unused) {
}
},
new V2NIMFailureCallback() {
@Override
public void onFailure(V2NIMError error) {
}
});
objective-c[[[NIMSDK sharedSDK] v2MessageService] deleteMessages:@[message]
serverExtension:@"json String"
onlyDeleteLocal:YES
success:^{
}
failure:^(V2NIMError * _Nonnull error) {
//error 包含错误原因
}];
cppstd::vector<V2NIMMessage> messages;
// ...
messageService.deleteMessages(
messages,
"serverExtension",
false,
[]() {
// delete messages succeeded
},
[](V2NIMError error) {
// delete messages failed, handle error
});
typescripttry {
await nim.V2NIMMessageService.deleteMessages(messages, 'serverExtension')
// todo Success
} catch (err) {
// todo error
}
typescripttry {
await v2.messageService.deleteMessages(messages, 'serverExtension', true)
// todo Success
} catch (err) {
// todo error
}
typescripttry {
await nim.messageService.deleteMessages(messages, 'serverExtension')
// todo Success
} catch (err) {
// todo error
}
dartawait NimCore.instance.messageService.deleteMessages(messages, serverExtension, onlyDeleteLocal);
清空历史消息
调用 clearHistoryMessage
方法清空指定会话内的所有消息,支持指定是否同步删除漫游消息以及是否多端同步清空操作。
本地或云端清空消息成功后,SDK 会返回清空成功回调 onClearHistoryNotifications
。
javaV2NIMMessageService v2MessageService = NIMClient.getService(V2NIMMessageService.class);
V2NIMConversationType conversationType = V2NIMConversationType.V2NIM_CONVERSATION_TYPE_P2P;
String conversationId = V2NIMConversationIdUtil.conversationId("xxx", conversationType);
// 根据实际情况配置
V2NIMClearHistoryMessageOption clearOption = V2NIMClearHistoryMessageOption
.V2NIMClearHistoryMessageOptionBuilder.builder(conversationId)
.withDeleteRoam()
.withExtension()
.withOnlineSync()
.build();
v2MessageService.clearHistoryMessage(clearOption, new V2NIMSuccessCallback<Void>() {
@Override
public void onSuccess(Void unused) {
}
}, new V2NIMFailureCallback() {
@Override
public void onFailure(V2NIMError error) {
}
});
objective-cV2NIMClearHistoryMessageOption *clearOption = [[V2NIMClearHistoryMessageOption alloc] init];
[[[NIMSDK sharedSDK] v2MessageService] clearHistoryMessage:clearOption
success:^{
} failure:^(V2NIMError * _Nonnull error) {
//error 包含错误原因
}];
cppV2NIMClearHistoryMessageOption option;
option.conversationId = V2NIMConversationIdUtil::p2pConversationId("target_account_id");
messageService.clearHistoryMessage(
option,
[]() {
// clear history message succeeded
},
[](V2NIMError error) {
// clear history message failed, handle error
});
typescripttry {
await nim.V2NIMMessageService.clearHistoryMessage({conversationId: 'me|1|another'})
// todo Success
} catch (err) {
// todo error
}
typescripttry {
await v2.messageService.clearHistoryMessage(option)
// todo Success
} catch (err) {
// todo error
}
typescripttry {
await nim.messageService.clearHistoryMessage({conversationId: 'me|1|another'})
// todo Success
} catch (err) {
// todo error
}
dartawait NimCore.instance.messageService.clearHistoryMessage(option);
全文搜索历史消息
调用 searchCloudMessages
方法,可以对指定会话、对象的历史消息进行全局关键字内容搜索。
- 目前仅支持搜索文本类型的消息,匹配规则为文本内容中包含关键字。
- 目前仅支持精确匹配,暂不支持模糊匹配和拼音匹配。
javaV2NIMMessageService v2MessageService = NIMClient.getService(V2NIMMessageService.class);
V2NIMMessageSearchParams searchParams = V2NIMMessageSearchParams.V2NIMMessageSearchParamsBuilder
// 搜索关键字,必填
.builder(keyword)
// TODO: 根据实际情况配置
.withBeginTime()
.withConversationLimit()
.withEndTime()
.withMessageLimit()
.withMessageSubtypes()
.withMessageTypes()
.withP2pAccountIds()
.withSenderAccountIds()
.withSortOrder()
.withTeamIds()
.build();
v2MessageService.searchCloudMessages(searchParams, new V2NIMSuccessCallback<List<V2NIMMessage>>() {
@Override
public void onSuccess(List<V2NIMMessage> v2NIMMessages) {
}
}, new V2NIMFailureCallback() {
@Override
public void onFailure(V2NIMError error) {
}
});
objective-cV2NIMMessageSearchParams *searchParams = [[V2NIMMessageSearchParams alloc] init];
[[[NIMSDK sharedSDK] v2MessageService] searchCloudMessages:searchParams
success:^(NSArray<V2NIMMessage *> * _Nonnull result) {
//查询成功结果
}
failure:^(V2NIMError * _Nonnull error) {
//error 包含错误原因
}];
cppV2NIMMessageSearchParams params;
params.keyword = "keyword";
params.messageLimit = 20;
messageService.searchCloudMessages(
params,
[](std::vector<V2NIMMessage> messages) {
for (auto&& message : messages) {
// do something
}
},
[](V2NIMError error) {
// search cloud messages failed, handle error
});
typescripttry {
const res: V2NIMMessage[] = await nim.V2NIMMessageService.searchCloudMessages({
keyword: 'keyword',
beginTime: 0,
endTime: 0,
conversationLimit: 20,
sortOrder: 0,
p2pAccountIds: ['a', 'b'],
senderAccountIds: ['c', 'd']
});
// todo: Success
} catch (err) {
// todo: error
}
typescripttry {
const result = await v2.messageService.searchCloudMessages({
keyword: 'keyword',
beginTime: 0,
endTime: 0,
conversationLimit: 20,
sortOrder: 0,
p2pAccountIds: ['a', 'b'],
senderAccountIds: ['c', 'd']
})
// todo Success
} catch (err) {
// todo error
}
typescripttry {
const res: V2NIMMessage[] = await nim.messageService.searchCloudMessages({
keyword: 'keyword',
beginTime: 0,
endTime: 0,
conversationLimit: 20,
sortOrder: 0,
p2pAccountIds: ['a', 'b'],
senderAccountIds: ['c', 'd']
})
// todo Success
} catch (err) {
// todo error
}
dartawait NimCore.instance.messageService.searchCloudMessages(params);
涉及接口
API | 说明 |
---|---|
addMessageListener |
注册消息相关监听器 |
removeMessageListener |
取消注册消息相关监听器 |
getMessageList |
按消息查询配置项分页获取所有历史消息 |
getMessageListByIds |
根据消息客户端 ID 获取历史消息 |
deleteMessage |
删除单条消息 |
deleteMessages |
批量删除消息列表 |
clearHistoryMessage |
清空会话内历史消息 |
searchCloudMessages |
全文搜索云端历史消息 |
getThreadMessageList |
分页获取云端 Thread 历史消息列表 |
getLocalThreadMessageList |
获取本地 Thread 历史消息列表 |
API | 说明 |
---|---|
on("EventName") |
注册消息相关监听器 |
off("EventName") |
取消注册消息相关监听器 |
getMessageList |
按消息查询配置项分页获取所有历史消息 |
getMessageListByIds |
根据消息客户端 ID 获取历史消息 |
deleteMessage |
删除单条消息 |
deleteMessages |
批量删除消息列表 |
clearHistoryMessage |
清空会话内历史消息 |
searchCloudMessages |
全文搜索云端历史消息 |
getThreadMessageList |
分页获取云端 Thread 历史消息列表 |
getLocalThreadMessageList |
暂不支持 |
API | 说明 |
---|---|
add |
注册消息相关监听器 |
cancel |
取消注册消息相关监听器 |
getMessageList |
按消息查询配置项分页获取所有历史消息 |
getMessageListByIds |
根据消息客户端 ID 获取历史消息 |
deleteMessage |
删除单条消息 |
deleteMessages |
批量删除消息列表 |
clearHistoryMessage |
清空会话内历史消息 |
searchCloudMessages |
全文搜索云端历史消息 |
getThreadMessageList |
分页获取云端 Thread 历史消息列表 |
getLocalThreadMessageList |
获取本地 Thread 历史消息列表 |