IMSDK
即时通信 IM 提供全球接入、单聊、群聊、消息推送、资料关系链托管、帐号鉴权等全方位解决方案,并提供完备的 App 接入、后台管理接口。
V2TIMMessageManagerabstract

Public 成员函数

abstract void addAdvancedMsgListener (V2TIMAdvancedMsgListener listener)
 
abstract void removeAdvancedMsgListener (V2TIMAdvancedMsgListener listener)
 
abstract V2TIMMessage createTextMessage (String text)
 
abstract V2TIMMessage createTextAtMessage (String text, List< String > userList)
 
abstract V2TIMMessage createCustomMessage (byte[] data)
 
abstract V2TIMMessage createCustomMessage (byte[] data, String description, byte[] extension)
 
abstract V2TIMMessage createImageMessage (String imagePath)
 
abstract V2TIMMessage createSoundMessage (String soundPath, int duration)
 
abstract V2TIMMessage createVideoMessage (String videoFilePath, String type, int duration, String snapshotPath)
 
abstract V2TIMMessage createFileMessage (String filePath, String fileName)
 
abstract V2TIMMessage createLocationMessage (String desc, double longitude, double latitude)
 
abstract V2TIMMessage createFaceMessage (int index, byte[] data)
 
abstract V2TIMMessage createMergerMessage (List< V2TIMMessage > messageList, String title, List< String > abstractList, String compatibleText)
 
abstract V2TIMMessage createForwardMessage (V2TIMMessage message)
 
abstract String sendMessage (V2TIMMessage message, String receiver, String groupID, int priority, boolean onlineUserOnly, V2TIMOfflinePushInfo offlinePushInfo, V2TIMSendCallback< V2TIMMessage > callback)
 
abstract void getC2CHistoryMessageList (String userID, int count, V2TIMMessage lastMsg, V2TIMValueCallback< List< V2TIMMessage >> callback)
 
abstract void getGroupHistoryMessageList (String groupID, int count, V2TIMMessage lastMsg, V2TIMValueCallback< List< V2TIMMessage >> callback)
 
abstract void getHistoryMessageList (V2TIMMessageListGetOption option, V2TIMValueCallback< List< V2TIMMessage >> callback)
 
abstract void revokeMessage (V2TIMMessage msg, V2TIMCallback callback)
 
abstract void markC2CMessageAsRead (String userID, V2TIMCallback callback)
 
abstract void markGroupMessageAsRead (String groupID, V2TIMCallback callback)
 
abstract void deleteMessageFromLocalStorage (V2TIMMessage msg, V2TIMCallback callback)
 
abstract void deleteMessages (List< V2TIMMessage > messages, V2TIMCallback callback)
 
abstract String insertGroupMessageToLocalStorage (V2TIMMessage msg, String groupID, String sender, V2TIMValueCallback< V2TIMMessage > callback)
 
abstract String insertC2CMessageToLocalStorage (V2TIMMessage msg, String userID, String sender, V2TIMValueCallback< V2TIMMessage > callback)
 
abstract void findMessages (List< String > messageIDList, V2TIMValueCallback< List< V2TIMMessage >> callback)
 

成员函数说明

◆ addAdvancedMsgListener()

abstract void addAdvancedMsgListener ( V2TIMAdvancedMsgListener  listener)
abstract

1.1 添加高级消息的事件监听器

◆ removeAdvancedMsgListener()

abstract void removeAdvancedMsgListener ( V2TIMAdvancedMsgListener  listener)
abstract

1.2 移除高级消息监听器

◆ createTextMessage()

abstract V2TIMMessage createTextMessage ( String  text)
abstract

2.1 创建文本消息

◆ createTextAtMessage()

abstract V2TIMMessage createTextAtMessage ( String  text,
List< String >  userList 
)
abstract

2.2 创建文本消息,并且可以附带 @ 提醒功能

提醒消息仅适用于在群组中发送的消息

参数
userList需要 @ 的用户列表,如果需要 @ALL,请传入 AT_ALL_TAG 常量字符串。 举个例子,假设该条文本消息希望@提醒 denny 和 lucy 两个用户,同时又希望@所有人,atUserList 传 ["denny","lucy",AT_ALL_TAG]

◆ createCustomMessage() [1/2]

abstract V2TIMMessage createCustomMessage ( byte[]  data)
abstract

2.3 创建自定义消息

◆ createCustomMessage() [2/2]

abstract V2TIMMessage createCustomMessage ( byte[]  data,
String  description,
byte[]  extension 
)
abstract

2.4 创建自定义消息

参数
description自定义消息描述信息,做离线Push时文本展示。
extension离线 Push 时扩展字段信息。

◆ createImageMessage()

abstract V2TIMMessage createImageMessage ( String  imagePath)
abstract

2.5 创建图片消息(图片最大支持 28 MB)

◆ createSoundMessage()

abstract V2TIMMessage createSoundMessage ( String  soundPath,
int  duration 
)
abstract

2.6 创建语音消息(语音最大支持 28 MB)

参数
duration语音时长,单位 s

◆ createVideoMessage()

abstract V2TIMMessage createVideoMessage ( String  videoFilePath,
String  type,
int  duration,
String  snapshotPath 
)
abstract

2.7 创建视频消息(视频最大支持 100 MB)

参数
type视频类型,如 mp4 mov 等
duration视频时长,单位 s
snapshotPath视频封面图片路径

◆ createFileMessage()

abstract V2TIMMessage createFileMessage ( String  filePath,
String  fileName 
)
abstract

2.8 创建文件消息(文件最大支持 100 MB)

◆ createLocationMessage()

abstract V2TIMMessage createLocationMessage ( String  desc,
double  longitude,
double  latitude 
)
abstract

2.9 创建地理位置消息

◆ createFaceMessage()

abstract V2TIMMessage createFaceMessage ( int  index,
byte[]  data 
)
abstract

2.10 创建表情消息

SDK 并不提供表情包,如果开发者有表情包,可使用 index 存储表情在表情包中的索引, 或者直接使用 data 存储表情二进制信息以及字符串 key,都由用户自定义,SDK 内部只做透传。

参数
index表情索引
data自定义数据

◆ createMergerMessage()

abstract V2TIMMessage createMergerMessage ( List< V2TIMMessage messageList,
String  title,
List< String >  abstractList,
String  compatibleText 
)
abstract

2.11 创建合并消息

我们在收到一条合并消息的时候,通常会在聊天界面这样显示:

|vinson 和 lynx 的聊天记录 | – title (标题)

|vinson:新版本 SDK 计划什么时候上线呢? | – abstract1 (摘要信息1)

|lynx:计划下周一,具体时间要看下这两天的系统测试情况.. | – abstract2 (摘要信息2)

|vinson:好的. | – abstract3 (摘要信息3)

聊天界面通常只会展示合并消息的标题和摘要信息,完整的转发消息列表,需要用户主动点击转发消息 UI 后再获取。

多条被转发的消息可以被创建成一条合并消息 V2TIMMessage,然后调用 sendMessage 接口发送,实现步骤如下:

1. 调用 createMergerMessage 创建一条合并消息 V2TIMMessage。

2. 调用 sendMessage 发送转发消息 V2TIMMessage。

收到合并消息解析步骤:

1. 通过 V2TIMMessage 获取 mergerElem。

2. 通过 mergerElem 获取 title 和 abstractList UI 展示。

3. 当用户点击摘要信息 UI 的时候,调用 downloadMessageList 接口获取转发消息列表。

参数
messageList消息列表(最大支持 300 条,消息对象必须是 V2TIM_MSG_STATUS_SEND_SUCC 状态,消息类型不能为 V2TIMGroupTipsElem)
title合并消息的来源,比如 "vinson 和 lynx 的聊天记录"、"xxx 群聊的聊天记录"。
abstractList合并消息的摘要列表(最大支持 5 条摘要,每条摘要的最大长度不超过 100 个字符),不同的消息类型可以设置不同的摘要信息,比如: 文本消息可以设置为:sender:text,图片消息可以设置为:sender:[图片],文件消息可以设置为:sender:[文件]。
compatibleText合并消息兼容文本,低版本 SDK 如果不支持合并消息,默认会收到一条文本消息,文本消息的内容为 compatibleText, 该参数不能为 null。

◆ createForwardMessage()

abstract V2TIMMessage createForwardMessage ( V2TIMMessage  message)
abstract

2.12 创建转发消息

如果需要转发一条消息,不能直接调用 sendMessage 接口发送原消息,需要先 createForwardMessage 创建一条转发消息再发送。

参数
message待转发的消息对象,消息状态必须为 V2TIM_MSG_STATUS_SEND_SUCC,消息类型不能为 V2TIMGroupTipsElem。
返回
转发消息对象,elem 内容和原消息完全一致。

◆ sendMessage()

abstract String sendMessage ( V2TIMMessage  message,
String  receiver,
String  groupID,
int  priority,
boolean  onlineUserOnly,
V2TIMOfflinePushInfo  offlinePushInfo,
V2TIMSendCallback< V2TIMMessage callback 
)
abstract

3.1 发送高级消息(高级版本:可以指定优先级,推送信息等特性)

参数
message待发送的消息对象,需要通过对应的 createXXXMessage 接口进行创建。
receiver消息接收者的 userID, 如果是发送 C2C 单聊消息,只需要指定 receiver 即可。
groupID目标群组 ID,如果是发送群聊消息,只需要指定 groupID 即可。
priority消息优先级,仅针对群聊消息有效。请把重要消息设置为高优先级(比如红包、礼物消息),高频且不重要的消息设置为低优先级(比如点赞消息)。
onlineUserOnly是否只有在线用户才能收到,如果设置为 true ,接收方历史消息拉取不到,常被用于实现“对方正在输入”或群组里的非重要提示等弱提示功能,该字段不支持 AVChatRoom。
offlinePushInfo离线推送时携带的标题和内容。
返回
消息唯一标识
注意
  • 设置 offlinePushInfo 字段,需要先在 V2TIMOfflinePushManager 开启推送,推送开启后,除了自定义消息,其他消息默认都会推送。
  • 如果自定义消息也需要推送,请设置 offlinePushInfo 的 desc 字段,设置成功后,推送的时候会默认展示 desc 信息。
  • AVChatRoom 群聊不支持 onlineUserOnly 字段,如果是 AVChatRoom 请将该字段设置为 false。
  • 如果设置 onlineUserOnly 为 true 时,该消息为在线消息且不会被计入未读计数。

◆ getC2CHistoryMessageList()

abstract void getC2CHistoryMessageList ( String  userID,
int  count,
V2TIMMessage  lastMsg,
V2TIMValueCallback< List< V2TIMMessage >>  callback 
)
abstract

4.1 获取单聊历史消息

参数
count拉取消息的个数,不宜太多,会影响消息拉取的速度,这里建议一次拉取 20 个
lastMsg获取消息的起始消息,如果传 null,起始消息为会话的最新消息
注意
如果 SDK 检测到没有网络,默认会直接返回本地数据

◆ getGroupHistoryMessageList()

abstract void getGroupHistoryMessageList ( String  groupID,
int  count,
V2TIMMessage  lastMsg,
V2TIMValueCallback< List< V2TIMMessage >>  callback 
)
abstract

4.2 获取群组历史消息

参数
count拉取消息的个数,不宜太多,会影响消息拉取的速度,这里建议一次拉取 20 个
lastMsg获取消息的起始消息,如果传 null,起始消息为会话的最新消息
注意
请注意:
  • 如果 SDK 检测到没有网络,默认会直接返回本地数据
  • 只有会议群(Meeting)才能拉取到进群前的历史消息,直播群(AVChatRoom)消息不存漫游和本地数据库,调用这个接口无效

◆ getHistoryMessageList()

abstract void getHistoryMessageList ( V2TIMMessageListGetOption  option,
V2TIMValueCallback< List< V2TIMMessage >>  callback 
)
abstract

4.3 获取历史消息高级接口

参数
option拉取消息选项设置,可以设置从云端、本地拉取更老或更新的消息
注意
请注意:
  • 如果设置为拉取云端消息,当 SDK 检测到没有网络,默认会直接返回本地数据
  • 只有会议群(Meeting)才能拉取到进群前的历史消息,直播群(AVChatRoom)消息不存漫游和本地数据库,调用这个接口无效

◆ revokeMessage()

abstract void revokeMessage ( V2TIMMessage  msg,
V2TIMCallback  callback 
)
abstract

4.4 撤回消息

注意
请注意:
  • 撤回消息的时间限制默认 2 minutes,超过 2 minutes 的消息不能撤回,您也可以在 控制台(功能配置 -> 登录与消息 -> 消息撤回设置)自定义撤回时间限制。
  • 仅支持单聊和群组中发送的普通消息,无法撤销 onlineUserOnly 为 true 即仅在线用户才能收到的消息,也无法撤销直播群(AVChatRoom)中的消息。
  • 如果发送方撤回消息,已经收到消息的一方会收到 V2TIMAdvancedMsgListener -> onRecvMessageRevoked 回调。

◆ markC2CMessageAsRead()

abstract void markC2CMessageAsRead ( String  userID,
V2TIMCallback  callback 
)
abstract

4.5 设置单聊消息已读

◆ markGroupMessageAsRead()

abstract void markGroupMessageAsRead ( String  groupID,
V2TIMCallback  callback 
)
abstract

4.6 设置群组消息已读

◆ deleteMessageFromLocalStorage()

abstract void deleteMessageFromLocalStorage ( V2TIMMessage  msg,
V2TIMCallback  callback 
)
abstract

4.7 删除本地消息

注意
消息只能本地删除,消息删除后,SDK 会在本地把这条消息标记为已删除状态,getHistoryMessage 不能再拉取到, 但是如果程序卸载重装,本地会失去对这条消息的删除标记,getHistoryMessage 还能再拉取到该条消息。

◆ deleteMessages()

abstract void deleteMessages ( List< V2TIMMessage messages,
V2TIMCallback  callback 
)
abstract

4.8 删除本地及漫游消息

注意
该接口会删除本地历史的同时也会把漫游消息即保存在服务器上的消息也删除,卸载重装后无法再拉取到。需要注意的是:
  • 一次最多只能删除 30 条消息
  • 要删除的消息必须属于同一会话
  • 一秒钟最多只能调用一次该接口
  • 如果该账号在其他设备上拉取过这些消息,那么调用该接口删除后,这些消息仍然会保存在那些设备上,即删除消息不支持多端同步。

◆ insertGroupMessageToLocalStorage()

abstract String insertGroupMessageToLocalStorage ( V2TIMMessage  msg,
String  groupID,
String  sender,
V2TIMValueCallback< V2TIMMessage callback 
)
abstract

4.9 向群组消息列表中添加一条消息

该接口主要用于满足向群组聊天会话中插入一些提示性消息的需求,比如“您已经退出该群”,这类消息有展示 在聊天消息区的需求,但并没有发送给其他人的必要。 所以 insertGroupMessageToLocalStorage() 相当于一个被禁用了网络发送能力的 sendMessage() 接口。

返回
msgID 消息唯一标识
注意
通过该接口 save 的消息只存本地,程序卸载后会丢失。

◆ insertC2CMessageToLocalStorage()

abstract String insertC2CMessageToLocalStorage ( V2TIMMessage  msg,
String  userID,
String  sender,
V2TIMValueCallback< V2TIMMessage callback 
)
abstract

4.10 向C2C消息列表中添加一条消息

该接口主要用于满足向C2C聊天会话中插入一些提示性消息的需求,比如“您已成功发送消息”,这类消息有展示 在聊天消息去的需求,但并没有发送给对方的必要。 所以 insertC2CMessageToLocalStorage()相当于一个被禁用了网络发送能力的 sendMessage() 接口。

返回
msgID 消息唯一表示
注意
通过该接口 save 的消息只存本地,程序卸载后会丢失。

◆ findMessages()

abstract void findMessages ( List< String >  messageIDList,
V2TIMValueCallback< List< V2TIMMessage >>  callback 
)
abstract

4.11 根据 messageID 查询指定会话中的本地消息

参数
messageIDList消息 ID 列表