MessageService class
Methods
-
addCollect({required int type, required String data, String? ext, String? uniqueId})
→ Future<NIMResult<NIMCollectInfo>>
-
添加一条收藏
-
addMessagePin(NIMMessage message, String? ext)
→ Future<NIMResult<void>>
-
PIN一条消息
-
增加一条快捷评论
-
addStickTopSession(String sessionId, NIMSessionType sessionType, String ext)
→ Future<NIMResult<NIMStickTopSessionInfo>>
-
添加一个置顶会话
-
cancelUploadAttachment(NIMMessage message)
→ Future<NIMResult<void>>
-
取消上传消息附件
-
checkLocalAntiSpam(String content, String replacement)
→ Future<NIMResult<NIMLocalAntiSpamResult>>
-
检验本地反垃圾词库,支持单聊、群聊和聊天室的文本消息反垃圾
-
clearAllSessionUnreadCount()
→ Future<NIMResult<void>>
-
清空所有会话的未读计数
-
clearChattingHistory(String account, NIMSessionType sessionType, bool? ignore)
→ Future<void>
-
清除与指定用户的所有本地消息记录
account
用户账号
sessionType
会话类型
ignore
true: 本地不记录清除操作; false: 本地记录清除操作,默认false, web端无效
如果为true则pullMessageHistory接口参数persist为true时会重新保存到数据库
不推荐设置成true
-
clearMsgDatabase(bool clearRecent)
→ Future<void>
-
清空消息数据库的所有消息记录。 可选择是否要同时清空最近联系人列表数据库。
若最近联系人列表也被清空,会触发onSessionDelete通知
-
clearServerHistory(String sessionId, NIMSessionType sessionType, bool sync)
→ Future<void>
-
删除单会话云端历史消息
-
clearSessionUnreadCount(List<NIMSessionInfo> sessionInfoList)
→ Future<NIMResult<List<NIMSessionInfo>>>
-
清除未读数
-
createSession({required String sessionId, required NIMSessionType sessionType, int tag = 0, required int time, bool linkToLastMessage = false})
→ Future<NIMResult<NIMSession>>
-
创建一条空的联系人会话,并保存到数据库中
sessionId
- 会话id ,对方帐号或群组id。
sessionType
- 会话类型
tag
- 会话tag , eg:置顶标签(UIKit中的实现: RECENT_TAG_STICKY) ,用户参照自己的tag 实现即可, 如不需要,传 0 即可
time
- 会话时间 ,单位为ms。
linkToLastMessage
- 是否放入最后一条消息的相关信息
-
deleteChattingHistory(NIMMessage anchor, bool ignore)
→ Future<void>
-
删除一条消息记录
-
deleteChattingHistoryList(List<NIMMessage> msgList, bool ignore)
→ Future<void>
-
指定多条消息进行本地删除
-
deleteMsgListSelf(List<NIMMessage> msgList, String ext)
→ Future<NIMResult<int>>
-
单向删除多条云端历史消息
-
deleteMsgSelf(NIMMessage msg, String ext)
→ Future<NIMResult<int>>
-
单向删除单条云端历史消息
-
deleteMySession(List<NIMMySessionKey> sessionList)
→ Future<NIMResult<void>>
-
【会话服务】删除会话
-
deleteSession({required NIMSessionInfo sessionInfo, required NIMSessionDeleteType deleteType, required bool sendAck})
→ Future<NIMResult<void>>
-
删除最近联系人记录。
调用该接口后,会触发MessageService.onSessionDelete通知
-
downloadAttachment({required NIMMessage message, required bool thumb})
→ Future<NIMResult<void>>
-
正常情况收到消息后附件会自动下载。如果下载失败,可调用该接口重新下载
message
附件所在的消息, thumb
下载缩略图还是原文件, 为true
时仅下载缩略图。 缩略图参数仅对图片和视频类消息有效
-
fetchTeamMessageReceiptDetail({required NIMMessage message, List<String>? accountList})
→ Future<NIMResult<NIMTeamMessageAckInfo>>
-
(群消息发送方)远程查询单条群组消息在指定用户中的已读、未读账号列表
-
forwardMessage(NIMMessage message, String sessionId, NIMSessionType sessionType)
→ Future<NIMResult<void>>
-
消息转发
支持更新客户端数据库内的消息的客户端扩展字段。
-
getMessagesDynamically(GetMessagesDynamicallyParam param)
→ Future<NIMResult<GetMessagesDynamicallyResult>>
-
动态途径获取消息,默认从本地获取,动态能力需要开通功能,并在同步完成后生效
-
noSuchMethod(Invocation invocation)
→ dynamic
-
Invoked when a nonexistent method or property is accessed.
inherited
-
pullHistoryById(List<NIMMessageKey> msgKeyList, bool persist)
→ Future<NIMResult<List<NIMMessage>>>
-
根据消息关键信息批量查询服务端历史消息。
msgKeyList
消息关键信息列表
persist
查询的漫游消息是否同步到本地数据库。
-
pullMessageHistory(NIMMessage anchor, int limit, bool persist)
→ Future<NIMResult<List<NIMMessage>>>
-
从服务器拉取消息历史记录,结果不存本地消息数据库。
-
pullMessageHistoryExType(NIMMessage anchor, int toTime, int limit, QueryDirection direction, List<NIMMessageType> messageTypeList, bool persist)
→ Future<NIMResult<List<NIMMessage>>>
-
从服务器拉取消息历史记录,可以指定查询的消息类型,结果不存本地消息数据库。
anchor
起始时间点的消息
toTime
– 结束时间点单位毫秒
limit
– 本次查询的消息条数上限(最多100条)
direction
– 查询方向,QUERY_OLD按结束时间点逆序查询,逆序排列;QUERY_NEW按起始时间点正序起查,正序排列
messageTypeList
– 消息类型,数组。
persist
– 通过该接口获取的漫游消息记录,要不要保存到本地消息数据库。
-
queryCollect({NIMCollectInfo? anchor, int toTime = 0, int? type, int limit = 100, QueryDirection direction = QueryDirection.QUERY_OLD})
→ Future<NIMResult<NIMCollectInfoQueryResult>>
-
从服务端分页查询收藏列表
-
queryLastMessage(String account, NIMSessionType sessionType)
→ Future<NIMResult<NIMMessage>>
-
查询最近一条消息
-
queryMessageList(String account, NIMSessionType sessionType, int limit)
→ Future<NIMResult<List<NIMMessage>>>
-
查询消息
-
queryMessageListByUuid(List<String> uuids, String sessionId, NIMSessionType sessionType)
→ Future<NIMResult<List<NIMMessage>>>
-
按消息uuid查询
-
queryMessageListEx(NIMMessage anchor, QueryDirection direction, int limit)
→ Future<NIMResult<List<NIMMessage>>>
-
查询消息
-
queryMessagePinForSession(String sessionId, NIMSessionType sessionType)
→ Future<NIMResult<List<NIMMessagePin>>>
-
查询会话所有的 PIN
-
queryMySession(String sessionId, NIMSessionType sessionType)
→ Future<NIMResult<RecentSession>>
-
【会话服务】获取某一个会话
-
queryMySessionList(int minTimestamp, int maxTimestamp, int needLastMsg, int limit, int hasMore)
→ Future<NIMResult<RecentSessionList>>
-
【会话服务】增量获取会话列表,增量+翻页
-
获取快捷评论列表
-
queryReplyCountInThreadTalkBlock(NIMMessage msg)
→ Future<NIMResult<int>>
-
本地获取某thread消息的回复消息的条数,thread消息不被计入总数
-
queryRoamMsgHasMoreTime(String sessionId, NIMSessionType sessionType)
→ Future<NIMResult<int>>
-
获取是否有更多漫游消息标记的时间戳,如果没有,回调0
-
querySession(NIMSessionInfo sessionInfo)
→ Future<NIMResult<NIMSession>>
-
查询最近联系人会话列表数据(同步接口),可以设置limit, 防止本地会话过多时,导致第一次加载慢
sessionInfo
- 会话信息
-
querySessionList([int? limit])
→ Future<NIMResult<List<NIMSession>>>
-
获取最近会话列表
-
querySessionListFiltered(List<NIMMessageType> filterMessageTypeList)
→ Future<NIMResult<List<NIMSession>>>
-
当希望返回的会话的最近一条消息不是某一类消息时,可以使用以下过滤接口。
-
queryStickTopSession()
→ Future<NIMResult<List<NIMStickTopSessionInfo>>>
-
获取置顶会话信息的列表
-
queryTeamMessageReceiptDetail({required NIMMessage message, List<String>? accountList})
→ Future<NIMResult<NIMTeamMessageAckInfo>>
-
从本地数据库查询单条群组消息已读、未读账号列表(同步接口)
/// 注意!!!:这里获取的数据通常比离线前的列表信息更陈旧
-
queryThreadTalkHistory({required NIMMessage anchor, required int fromTime, required int toTime, required int limit, required QueryDirection direction, required bool persist})
→ Future<NIMResult<NIMThreadTalkHistory>>
-
查询thread聊天云端历史(支持p2p、群、超大群)
-
queryTotalUnreadCount({NIMUnreadCountQueryType queryType = NIMUnreadCountQueryType.all})
→ Future<NIMResult<int>>
-
获取未读数总数
-
refreshTeamMessageReceipt(List<NIMMessage> messageList)
→ Future<NIMResult<void>>
-
(群消息发送方)批量刷新群组消息已读、未读的数量信息,没有异步回调
如果已读、未读数有变更,请监听 onTeamMessageReceipt 来批量通知,没有变更则不会通知
-
removeCollect(List<NIMCollectInfo> collects)
→ Future<NIMResult<int>>
-
批量移除收藏
-
removeMessagePin(NIMMessage message, String? ext)
→ Future<NIMResult<void>>
-
删除一条消息的PIN
-
删除一条快捷评论
-
removeStickTopSession(String sessionId, NIMSessionType sessionType, String ext)
→ Future<NIMResult<void>>
-
删除一个置顶会话
-
replyMessage({required NIMMessage msg, required NIMMessage replyMsg, required bool resend})
→ Future<NIMResult<void>>
-
回复消息。
msg
待发送的消息体,由{@link MessageBuilder}构造
replyMsg
被回复的消息
resend
如果是发送失败后重发,标记为true,否则填false
-
revokeMessage({required NIMMessage message, String? customApnsText, Map<String, Object>? pushPayload, bool? shouldNotifyBeCount, String? postscript, String? attach})
→ Future<NIMResult<void>>
-
撤回消息
message
- 要撤回的消息
customApnsText
– 第三方透传消息推送文本,不填则不推送
pushPayload
– 第三方自定义的推送属性,限制json类型,长度2048
shouldNotifyBeCount
– 撤回通知是否更新未读数
postscript
– 附言
attach
– 扩展字段
-
saveMessage({required NIMMessage message, required String fromAccount})
→ Future<NIMResult<NIMMessage>>
-
保存消息
-
saveMessageToLocalEx({required NIMMessage message, required int time})
→ Future<NIMResult<NIMMessage>>
-
保存消息到本地
-
searchAllMessage(MessageSearchOption searchOption)
→ Future<NIMResult<List<NIMMessage>>>
-
全局检索(新)
-
searchCloudMessageHistory(MessageKeywordSearchConfig config)
→ Future<NIMResult<List<NIMMessage>>>
-
全文云端消息检索
-
searchMessage(NIMSessionType sessionType, String sessionId, MessageSearchOption searchOption)
→ Future<NIMResult<List<NIMMessage>>>
-
单会话检索(新)
-
searchRoamingMsg(String otherAccid, int fromTime, int endTime, String keyword, int limit, bool reverse)
→ Future<NIMResult<List<NIMMessage>>>
-
单聊云端消息检索
-
sendAudioMessage({required String sessionId, required NIMSessionType sessionType, required String filePath, required int fileSize, required int duration, String? displayName, String? base64, NIMNosScene nosScene = NIMNosScenes.defaultIm, MessageAction? action})
→ Future<NIMResult<NIMMessage>>
-
发送音频消息
displayName
字段无效,不建议使用
base64
字段为web端专用,web端filePath
可传空字符串
-
sendCustomMessage({required String sessionId, required NIMSessionType sessionType, String? content, NIMMessageAttachment? attachment, NIMCustomMessageConfig? config, MessageAction? action})
→ Future<NIMResult<NIMMessage>>
-
发送自定义消息
-
sendFileMessage({required String sessionId, required NIMSessionType sessionType, required String filePath, String? base64, int? fileSize, required String displayName, NIMNosScene nosScene = NIMNosScenes.defaultIm, MessageAction? action})
→ Future<NIMResult<NIMMessage>>
-
发送文件消息
base64
字段为web端专用,web端filePath
可传空字符串
-
sendImageMessage({required String sessionId, required NIMSessionType sessionType, required String filePath, required int fileSize, String? displayName, String? base64, NIMNosScene nosScene = NIMNosScenes.defaultIm, MessageAction? action})
→ Future<NIMResult<NIMMessage>>
-
发送图片消息
base64
字段为web端专用,web端filePath
可传空字符串
-
sendLocationMessage({required String sessionId, required NIMSessionType sessionType, required double latitude, required double longitude, required String address, MessageAction? action})
→ Future<NIMResult<NIMMessage>>
-
发送地理位置消息
-
sendMessage({required NIMMessage message, bool resend = false})
→ Future<NIMResult<NIMMessage>>
-
发送消息
如果需要更新发送进度,请监听 onMessageStatus。
如果需要监听附件进度,请监听 onAttachmentProgress。
如果消息发送失败后需要重发,请使用
resend
参数。
-
sendMessageReceipt({required String sessionId, required NIMMessage message})
→ Future<NIMResult<void>>
-
发送单聊已读回执
如果需要监听消息已读回执,请监听 onMessageReceipt。
-
sendTeamMessageReceipt(NIMMessage message)
→ Future<NIMResult<void>>
-
发送群消息已读回执
如果需要监听群消息已读回执,请监听 onTeamMessageReceipt。
-
sendTextMessage({required String sessionId, required NIMSessionType sessionType, required String text, MessageAction? action})
→ Future<NIMResult<NIMMessage>>
-
发送文本消息
-
sendTipMessage({required String sessionId, required NIMSessionType sessionType, MessageAction? action, String? content})
→ Future<NIMResult<NIMMessage>>
-
发送Tip消息
content
web端tip内容传这个字段
-
sendVideoMessage({required String sessionId, required NIMSessionType sessionType, required String filePath, int? fileSize, required int duration, required int width, required int height, required String displayName, String? base64, NIMNosScene nosScene = NIMNosScenes.defaultIm, MessageAction? action})
→ Future<NIMResult<NIMMessage>>
-
发送视频消息
base64
字段为web端专用,web端filePath
可传空字符串
-
setChattingAccount({required String sessionId, required NIMSessionType sessionType})
→ Future<NIMResult<void>>
-
设置当前会话,Android iOS 平台可用
调用以下接口重置当前会话,SDK会自动管理消息的未读数。
该接口会自动调用clearUnreadCount(String, SessionTypeEnum)将正在聊天对象的未读数清零。
如果有新消息到达,且消息来源是正在聊天的对象,其未读数也不会递增。
-
toString()
→ String
-
A string representation of this object.
inherited
-
updateCollect(NIMCollectInfo info)
→ Future<NIMResult<NIMCollectInfo>>
-
更新一个收藏的扩展字段
-
updateMessage(NIMMessage message)
→ Future<NIMResult<void>>
-
消息更新
支持更新客户端数据库内的消息的客户端扩展字段。
-
updateMessagePin(NIMMessage message, String? ext)
→ Future<NIMResult<void>>
-
更新一条消息的PIN
-
updateMySession(String sessionId, NIMSessionType sessionType, String ext)
→ Future<NIMResult<void>>
-
【会话服务】更新某一个会话,主要是设置会话的ext字段,如果会话不存在,则会创建出来,此时会话没有lastMsg
-
updateRoamMsgHasMoreTag(NIMMessage newTag)
→ Future<NIMResult<void>>
-
更新是否有更多漫游消息的标记
-
updateSession({required NIMSession session, bool needNotify = false})
→ Future<NIMResult<void>>
-
更新会话对象
-
updateSessionWithMessage({required NIMMessage message, bool needNotify = false})
→ Future<NIMResult<void>>
-
使用消息更新会话对象
-
updateStickTopSession(String sessionId, NIMSessionType sessionType, String ext)
→ Future<NIMResult<void>>
-
更新一个会话在置顶上的扩展字段
-
voiceToText({required NIMMessage message, String? scene, String? mimeType = 'aac', String? sampleRate = '16000'})
→ Future<NIMResult<String>>
-
语音转文字
mimeType
PC 端使用,指定语音类型 aac, wav, mp3, amr,默认 aac
sampleRate
PC 端使用,指定语音采样率 8000kHz, 16000kHz,默认 16000