高级消息
Public 成员函数 | |
V2TIMMessage () | |
V2TIMMessage (const V2TIMMessage &) | |
V2TIMMessage & | operator= (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 | isSelf |
bool | isRead |
bool | isPeerRead |
V2TIMStringVector | groupAtUserList |
V2TIMElemVector | elemList |
V2TIMBuffer | localCustomData |
int | localCustomInt |
V2TIMBuffer | cloudCustomData |
bool | isExcludedFromUnreadCount |
bool | isExcludedFromLastMessage |
void * | obj_ptr |
V2TIMMessage | ( | ) |
V2TIMMessage | ( | const V2TIMMessage & | ) |
|
override |
V2TIMMessage& operator= | ( | const V2TIMMessage & | ) |
V2TIMString msgID |
消息 ID(消息创建的时候为空,消息发送的时候会生成)
int64_t timestamp |
消息时间
V2TIMString sender |
消息发送者
V2TIMString nickName |
消息发送者昵称
V2TIMString friendRemark |
消息发送者好友备注
V2TIMString nameCard |
如果是群组消息,nameCard 为发送者的群名片
V2TIMString faceURL |
消息发送者头像 在 C2C 场景下,陌生人的头像不会实时更新,如需更新陌生人的头像(如在 UI 上点击陌生人头像以展示陌生人信息时), 请调用 V2TIMManager.h -> GetUsersInfo 接口触发信息的拉取。待拉取成功后,SDK 会更新本地头像信息,即 faceURL 字段的内容。
V2TIMString groupID |
如果是群组消息,groupID 为会话群组 ID,否则为空
V2TIMString userID |
如果是单聊消息,userID 为会话用户 ID,否则为空, 假设自己和 userA 聊天,无论是自己发给 userA 的消息还是 userA 发给自己的消息,这里的 userID 均为 userA
uint64_t seq |
群聊中的消息序列号云端生成,在群里是严格递增且唯一的, 单聊中的序列号是本地生成,不能保证严格递增且唯一。
uint64_t random |
消息随机码
V2TIMMessageStatus status |
消息发送状态
bool isSelf |
消息发送者是否是自己
bool isRead |
消息自己是否已读
bool isPeerRead |
消息对方是否已读(只有 C2C 消息有效)
V2TIMStringVector groupAtUserList |
群消息中被 @ 的用户 UserID 列表(即该消息都 @ 了哪些人)
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);
V2TIMBuffer localCustomData |
消息自定义数据(本地保存,不会发送到对端,程序卸载重装后失效)
int localCustomInt |
消息自定义数据,可以用来标记语音、视频消息是否已经播放(本地保存,不会发送到对端,程序卸载重装后失效)
V2TIMBuffer cloudCustomData |
消息自定义数据(云端保存,会发送到对端,程序卸载重装后还能拉取到)
bool isExcludedFromUnreadCount |
消息是否不计入会话未读数:默认为 false,表明需要计入会话未读数,设置为 true,表明不需要计入会话未读数
bool isExcludedFromLastMessage |
消息是否不计入会话 lastMsg:默认为 false,表明需要计入会话 lastMsg,设置为 true,表明不需要计入会话 lastMsg
|
inherited |