介绍

消息类介绍

在 Chat SDK 中,消息类为 V2TIMMessage (Android / iOS & Mac / Windows) 。您在发送和接收消息过程中都会频繁地用到该类。
V2TIMMessage 类定义了以下内容:
属性
含义
说明
msgID
消息 ID
消息创建的时候为空,调用 sendMessage 的时候同步返回。
timestamp
消息时间戳
消息发送到服务端的时间。可用于消息排序。
sender
消息发送者的 userID
客户自己设置,跟登录时传入的 userID 一致。
nickName
消息发送者的昵称
客户自己设置。调用 setSelfInfo 设置及修改。详情可参考 用户资料
friendRemark
消息发送者的好友备注
接收方使用。例如 alice 给好友 bob 备注为 "bob01"。当 bob 给 alice 发消息,此时对于 alice 而言,消息中的 friendRemark 为 "bob01"。调用 setFriendInfo 设置。
nameCard
发送者的群名片
仅群聊消息有效。例如 alice 修改自己的群名片为 "doctorA",那么 alice 往群里发送的消息,群成员收到的消息 nameCard 字段值为 "doctorA"。接收者可以将这个字段优先作为用户名称的显示。nameCard 需要调用 setGroupMemberInfo 设置。详情可参见 群成员资料
faceURL
消息发送者头像
客户自己设置的头像 URL,可以通过它下载头像图片。
groupID
群组 ID
群聊消息中 groupID 为群组 ID;单聊消息中 groupID 为 nil。
userID
用户 ID
单聊消息中 userID 为对端用户 ID;群聊消息中 userID 为 nil。
seq
消息序列号
单聊消息的 seq 由本地生成,不能保证严格递增且唯一;群聊消息的 seq 由服务器生成,在当前群里的严格递增且唯一的。
random
消息随机码
SDK 内部生成。
status
消息发送状态
目前支持:发送中、发送成功、发送失败、被删除、导入到本地、被撤销。
isSelf
消息发送者是否是自己
可用于消息筛选。
needReadReceipt
消息是否需要已读回执
发送方设置。6.1 以上版本有效,需要购买进阶版。详情可参考 已读回执
isBroadcastMessage
是否是广播消息
仅直播群支持广播消息。发送广播消息只能使用 REST API,SDK 仅接收。SDK 6.5.2803 增强版及以上版本支持,需要购买进阶版。详情可参见 接收广播消息
priority
消息优先级
仅群聊消息有效。通过 sendMessage 接口设置。
groupAtUserList
群消息被 @ 的用户列表
仅群聊消息有效。列表中存储的是 userID。详情可参考 群 @ 消息。
elemType
消息类型
目前支持:文本、自定义内容、图片、语音、视频、文件、地理位置、表情、群 tips、合并转发消息。详情可参考 消息分类。
textElem
文本消息存储元素
发送文本消息需要创建并填充该元素;收到消息判断 elemType 为 TEXT 时,可以从 textElem 中解析出内容。详情可参考 发送消息 / 接收消息。
customElem
自定义消息存储元素
发送自定义消息需要创建并填充该元素;收到消息判断 elemType 为 CUSTOM 时,可以从 customElem 中解析出内容。
imageElem
图片消息存储元素
发送图片消息需要创建并填充该元素;收到消息判断 elemType 为 IMAGE 时,可以从 imageElem 中解析出内容。
soundElem
语音消息存储元素
发送语音消息需要创建并填充该元素;收到消息判断 elemType 为 SOUND 时,可以从 soundElem 中解析出内容。
videoElem
视频消息存储元素
发送视频消息需要创建并填充该元素;收到消息判断 elemType 为 VIDEO 时,可以从 videoElem 中解析出内容。
fileElem
文件消息存储元素
发送文件消息需要创建并填充该元素;收到消息判断 elemType 为 FILE 时,可以从 fileElem 中解析出内容。
locationElem
地理位置消息存储元素
发送地理位置消息需要创建并填充该元素;收到消息判断 elemType 为 LOCATION 时,可以从 locationElem 中解析出内容。
faceElem
表情消息存储元素
发送地理位置消息需要创建并填充该元素;收到消息判断 elemType 为 FACE 时,可以从 faceElem 中解析出内容。
mergerElem
合并消息存储元素
发送合并位置消息需要创建并填充该元素;收到消息判断 elemType 为 MERGER 时,可以从 mergerElem 中解析出内容。详情可参考 转发消息
groupTipsElem
群 tips 消息存储元素
群 tips 消息目前只能由服务器发送。SDK 收到消息判断 elemType 为 GROUP_TIPS 时,可以从 groupTipsElem 中解析出内容。
cloudCustomData
消息自定义数据
发送方设置。内容由用户自定义。云端保存,会发送到对端,程序卸载重装后还能拉取到。
isExcludedFromUnreadCount
消息是否不计入会话未读数
发送方设置。默认为需要计入会话未读数。5.3.425 及以上版本支持。详情可参见 会话未读数
isExcludedFromLastMessage
消息是否不计入会话 lastMsg
发送方设置。默认为需要计入会话 lastMsg。5.4.666 及以上版本支持。详情可参考 会话列表
isExcludedFromContentModeration
消息是否不过内容审核(云端审核
发送方设置。默认为需要过内容审核。7.1 及以上版本支持。只有在开通云端审核功能后设置才有效。
hasRiskContent
是否被标记为有安全风险的消息
暂时只支持语音和视频消息,只有在开通云端审核功能后才有效,如果您发送的语音或视频消息内容不合规,云端异步审核后会触发 SDK 的 onRecvMessageModified回调,回调里的 message 对象该字段值为 true。
disableCloudMessagePreHook
是否禁用消息发送前云端回调
发送方设置。默认不禁用消息发送前云端回调。8.1 及以上版本支持。
disableCloudMessagePostHook
是否禁用消息发送后云端回调
发送方设置。默认不禁用消息发送后云端回调。8.1 及以上版本支持。
isRead
消息是否本端已读
如果是自己发的消息,默认已读。
isPeerRead
消息是否对端已读
仅单聊消息有效。
localCustomData
消息自定义数据
发送方设置。本地保存,不会发送到对端,程序卸载重装后失效。
localCustomInt
消息自定义数据
发送方设置。本地保存,不会发送到对端,程序卸载重装后失效。可以用来标记语音、视频消息是否已经播放。

消息分类

按照消息的发送目标,消息可以分为:“单聊消息”(又称 “C2C 消息”)和“群聊消息” 两种:
消息分类
API 关键词
说明
单聊消息
C2CMessage
又称 C2C 消息,在发送时需要指定消息接收者的 UserID,只有接受者可以收到该消息。
群聊消息
GroupMessage
在发送时需要指定目标群组的 groupID,该群中的所有用户均能收到消息。
按照消息承载的内容可以分为 “文本消息”、“自定义(信令)消息”,“图片消息”、“视频消息”、“语音消息”、“文件消息”、“位置消息”、“合并消息”、“群 tips 消息”等几种类型。
消息分类
API 关键词
说明
文本消息
TextElem
普通的文字消息。
自定义消息
CustomElem
一段二进制 buffer,通常用于传输您应用中的自定义信令。
图片消息
ImageElem
SDK 会在发送原始图片的同时,自动生成两种不同尺寸的缩略图,三张图分别被称为原图、大图、微缩图。
视频消息
VideoElem
一条视频消息包含一个视频文件和一张配套的缩略图。
语音消息
SoundElem
支持语音是否播放红点展示。
文件消息
FileElem
文件消息最大支持 100 MB。
位置消息
LocationElem
地理位置消息由位置描述、经度(longitude )和纬度(latitude)三个字段组成。
合并消息
MergerElem
适用于合并转发聊天记录等场景,最大支持 300 条消息合并。

消息存储策略

腾讯云 IM 消息按照消息存储策略,可以分为两种消息:在线消息、非在线消息。 在线消息是指只有当用户在线时才能接收到,离线后不会通过离线推送下发给用户。非在线消息是指无论用户是否在线,都能收到的消息。
在线消息会实时下发,不会存储在服务端。SDK 也不会存储在线消息。所以换设备或卸载后重新安装 App 拉取历史消息都不能拉到此类消息。
说明:
1. 直播群所有的消息都属于在线消息。
2. 全员推送的消息都属于在线消息。
非在线消息会被 SDK 和服务端存储。漫游服务器默认存储 7 天的消息。如果您希望存储超过 7 天,需要购买增值服务。
换设备或卸载后重新安装 App 拉取历史消息可以拉到此类消息。