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

详细描述

高级消息

Public 成员函数

bool IsRead () const
 
bool IsPeerRead () const
 
V2TIMBuffer GetLocalCustomData () const
 
void SetLocalCustomData (const V2TIMBuffer &localCustomData, V2TIMCallback *callback)
 
int GetLocalCustomInt () const
 
void SetLocalCustomInt (int localCustomInt, V2TIMCallback *callback)
 
 V2TIMMessage ()
 
 V2TIMMessage (const V2TIMMessage &)
 
V2TIMMessageoperator= (const V2TIMMessage &)
 
 ~V2TIMMessage () override
 

成员变量

V2TIMString msgID
 
int64_t timestamp
 
V2TIMString sender
 
V2TIMString nickName
 
V2TIMString friendRemark
 
V2TIMString nameCard
 
V2TIMString faceURL
 
V2TIMString groupID
 
V2TIMString userID
 
uint64_t seq
 
uint64_t random
 
V2TIMMessageStatus status
 
bool supportMessageExtension
 
bool isSelf
 
bool needReadReceipt
 
bool isBroadcastMessage
 
V2TIMMessagePriority priority
 
V2TIMStringVector groupAtUserList
 
V2TIMElemVector elemList
 
V2TIMBuffer cloudCustomData
 
bool isExcludedFromUnreadCount
 
bool isExcludedFromLastMessage
 
bool isExcludedFromContentModeration
 
V2TIMString customModerationConfigurationID
 
bool hasRiskContent
 
bool disableCloudMessagePreHook
 
bool disableCloudMessagePostHook
 
V2TIMOfflinePushInfo offlinePushInfo
 
V2TIMUserFullInfo revokerInfo
 
V2TIMString revokeReason
 
V2TIMGroupMemberInfo pinnerInfo
 
void * obj_ptr
 

构造及析构函数说明

◆ V2TIMMessage() [1/2]

◆ V2TIMMessage() [2/2]

V2TIMMessage ( const V2TIMMessage )

◆ ~V2TIMMessage()

~V2TIMMessage ( )
override

成员函数说明

◆ IsRead()

bool IsRead ( ) const

消息自己是否已读

◆ IsPeerRead()

bool IsPeerRead ( ) const

消息对方是否已读(只有 C2C 消息有效) 该字段为 true 的条件是消息 timestamp <= 对端标记会话已读的时间

◆ GetLocalCustomData()

V2TIMBuffer GetLocalCustomData ( ) const

获取消息自定义数据(本地保存,不会发送到对端,程序卸载重装后失效)

◆ SetLocalCustomData()

void SetLocalCustomData ( const V2TIMBuffer localCustomData,
V2TIMCallback callback 
)

设置消息自定义数据(本地保存,不会发送到对端,程序卸载重装后失效)

◆ GetLocalCustomInt()

int GetLocalCustomInt ( ) const

获取消息自定义数据,可以用来标记语音、视频消息是否已经播放(本地保存,不会发送到对端,程序卸载重装后失效)

◆ SetLocalCustomInt()

void SetLocalCustomInt ( int  localCustomInt,
V2TIMCallback callback 
)

设置消息自定义数据,可以用来标记语音、视频消息是否已经播放(本地保存,不会发送到对端,程序卸载重装后失效)

◆ operator=()

V2TIMMessage& operator= ( const V2TIMMessage )

结构体成员变量说明

◆ msgID

V2TIMString msgID

消息 ID(消息创建的时候为空,消息发送的时候会生成)

◆ timestamp

int64_t timestamp

消息的 UTC 时间戳

◆ sender

V2TIMString sender

消息发送者

◆ nickName

V2TIMString nickName

消息发送者昵称

◆ friendRemark

V2TIMString friendRemark

消息发送者好友备注

◆ nameCard

V2TIMString nameCard

如果是群组消息,nameCard 为发送者的群名片

◆ faceURL

V2TIMString faceURL

消息发送者头像 在 C2C 场景下,陌生人的头像不会实时更新,如需更新陌生人的头像(如在 UI 上点击陌生人头像以展示陌生人信息时), 请调用 V2TIMManager.h -> GetUsersInfo 接口触发信息的拉取。待拉取成功后,SDK 会更新本地头像信息,即 faceURL 字段的内容。

注意
请不要在收到每条消息后都去 GetUsersInfo,会严重影响程序性能。

◆ groupID

V2TIMString groupID

如果是群组消息,groupID 为会话群组 ID,否则为空

◆ userID

V2TIMString userID

如果是单聊消息,userID 为会话用户 ID,否则为空, 假设自己和 userA 聊天,无论是自己发给 userA 的消息还是 userA 发给自己的消息,这里的 userID 均为 userA

◆ seq

uint64_t seq

群聊中的消息序列号云端生成,在群里是严格递增且唯一的, 单聊中的序列号是本地生成,不能保证严格递增且唯一。

◆ random

uint64_t random

消息随机码

◆ status

消息发送状态

◆ supportMessageExtension

bool supportMessageExtension

是否支持消息扩展(6.7 及其以上版本支持,需要您购买旗舰版套餐) 直播群(AVChatRoom)消息不支持该功能。 您需要先到 IM 控制台配置该功能。

◆ isSelf

bool isSelf

消息发送者是否是自己

◆ needReadReceipt

bool needReadReceipt

消息是否需要已读回执

注意

群聊消息 6.1 及以上版本支持该特性,需要您先到 IM 控制台配置支持已读回执的群类型。

单聊消息 6.2 及以上版本支持该特性。

群聊消息和单聊消息都需要购买旗舰版套餐包。

◆ isBroadcastMessage

bool isBroadcastMessage

是否是广播消息,仅直播群支持(6.5 及以上版本支持,需要您购买旗舰版套餐)

◆ priority

消息优先级(只有 onRecvNewMessage 收到的 V2TIMMessage 获取有效)

◆ groupAtUserList

V2TIMStringVector groupAtUserList

群消息中被 @ 的用户 UserID 列表(即该消息都 @ 了哪些人)

◆ elemList

V2TIMElemVector elemList

消息元素列表

推荐一条消息只存放一个 elem,在收到这条消息时,调用 elemList[0] 获取这个elem,示例代码如下: if (1 == message.elemList.Size()) { V2TIMElem *elem = message.elemList[0]; switch (elem->elemType) { case V2TIM_ELEM_TYPE_TEXT: V2TIMTextElem *textElem = static_cast<V2TIMTextElem *>(elem); break; case V2TIM_ELEM_TYPE_CUSTOM: V2TIMCustomElem *customElem = static_cast<V2TIMCustomElem *>(elem); break; case V2TIM_ELEM_TYPE_FACE: V2TIMFaceElem *faceElem = static_cast<V2TIMFaceElem *>(elem); break; case V2TIM_ELEM_TYPE_LOCATION: V2TIMLocationElem *locationElem = static_cast<V2TIMLocationElem *>(elem); break; default: break; } }

如果一条消息有多个 elem,遍历 elemList 列表,获取全部 elem 元素,示例代码如下: for (size_t i = 0; i < message.elemList.Size(); ++i) { V2TIMElem *elem = message.elemList[i]; switch (elem->elemType) { case V2TIM_ELEM_TYPE_TEXT: V2TIMTextElem *textElem = static_cast<V2TIMTextElem *>(elem); break; case V2TIM_ELEM_TYPE_CUSTOM: V2TIMCustomElem *customElem = static_cast<V2TIMCustomElem *>(elem); break; case V2TIM_ELEM_TYPE_FACE: V2TIMFaceElem *faceElem = static_cast<V2TIMFaceElem *>(elem); break; case V2TIM_ELEM_TYPE_LOCATION: V2TIMLocationElem *locationElem = static_cast<V2TIMLocationElem *>(elem); break; default: break; } }

如果您的一条消息需要多个 elem,可以在创建 Message 对象后,调用 elemList.PushBack 添加新 elem, 以 V2TIMTextElem 和 V2TIMCustomElem 多 elem 为例,示例代码如下: V2TIMCustomElem *customElem = new V2TIMCustomElem(); customElem->data = buffer; V2TIMMessage message = messageManager.CreateTextMessage("text"); message.elemList.PushBack(customElem);

◆ cloudCustomData

V2TIMBuffer cloudCustomData

消息自定义数据(云端保存,会发送到对端,程序卸载重装后还能拉取到)

◆ isExcludedFromUnreadCount

bool isExcludedFromUnreadCount

消息是否不计入会话未读数:默认为 false,表明需要计入会话未读数,设置为 true,表明不需要计入会话未读数

5.3.425 及以上版本支持, 会议群(Meeting)默认不支持该字段

◆ isExcludedFromLastMessage

bool isExcludedFromLastMessage

消息是否不计入会话 lastMsg:默认为 false,表明需要计入会话 lastMsg,设置为 true,表明不需要计入会话 lastMsg

◆ isExcludedFromContentModeration

bool isExcludedFromContentModeration

消息是否不过内容审核(【云端审核】) 只有在开通【云端审核】功能后,isExcludedFromContentModeration 设置才有效,设置为 true,表明不过内容审核,设置为 false:表明过内容审核。 【云端审核】开通流程请参考 云端审核功能

◆ customModerationConfigurationID

V2TIMString customModerationConfigurationID

消息自定义审核配置 ID(从 7.8 版本开始支持) 在开通【云端审核】功能后,您可以请前往 控制台 (云端审核 -> 审核配置 -> 自定义配置 -> 添加自定义配置) 获取配置 ID。 【自定义审核】配置流程请参考 [云端审核功能](https://cloud.tencent.com/document/product/269/78633a5efc9e8-a7ec-40e3-9b18-8ed1910f589c)

注意
该字段需要发消息前设置,仅用于控制发消息时的消息审核策略,其值不会存储在漫游和本地

◆ hasRiskContent

bool hasRiskContent

是否被标记为有安全风险的消息(从 7.4 版本开始支持) 暂时只支持语音和视频消息。 只有在开通【云端审核】功能后才生效,【云端审核】开通流程请参考 云端审核功能。 如果您发送的语音或视频消息内容不合规,云端异步审核后会触发 SDK 的 onRecvMessageModified 回调,回调里的 message 对象该字段值为 true。

◆ disableCloudMessagePreHook

bool disableCloudMessagePreHook

是否禁用消息发送前云端回调(从 8.1 版本开始支持)

◆ disableCloudMessagePostHook

bool disableCloudMessagePostHook

是否禁用消息发送后云端回调(从 8.1 版本开始支持)

◆ offlinePushInfo

V2TIMOfflinePushInfo offlinePushInfo

消息的离线推送信息

◆ revokerInfo

V2TIMUserFullInfo revokerInfo

消息撤回者(从 7.4 版本开始支持) 仅当消息为撤回状态时有效

◆ revokeReason

V2TIMString revokeReason

消息撤回原因 (从 7.4 版本开始支持) 仅当消息为撤回状态时有效

◆ pinnerInfo

消息置顶者 (从 8.0 版本开始支持) 只有通过 GetPinnedGroupMessageList 获取到的置顶消息才包含该字段

◆ obj_ptr

void* obj_ptr
inherited