Unity

最近更新时间:2024-10-10 17:01:40

我的收藏

功能描述

消息已读回执指的是,发送端往会话中发送消息,如果他想知道哪些人读过/还没读过这条消息,那么他就需要开启消息已读回执功能。 开启后,发送端发送消息时可以设置消息是否需要已读回执。如果设置为“需要”,接收端查看消息后才会发送自己已读给发送端。
单聊和群聊均支持消息已读回执功能,操作步骤一致。
说明
该功能需要购买旗舰版套餐包。

消息已读回执

设置支持已读回执的群类型

如果是群消息已读回执,需要先在 即时通信 IM 控制台 > 功能配置 > 群组配置 > 群已读消息回执配置 中设置支持已读回执消息的群类型。

发送端设置消息需要已读回执

示例代码如下:
var message = new Message
{
message_conv_id = conv_id,
message_conv_type = TIMConvType.kTIMConv_Group,
message_cloud_custom_str = "unity local custom data",
message_elem_array = new List<Elem>{new Elem
{
elem_type = TIMElemType.kTIMElem_Text,
text_elem_content = Input.text
}},
message_need_read_receipt = true,
};
StringBuilder messageId = new StringBuilder(128);
TIMResult res = TencentIMSDK.MsgSendMessage(conv_id, TIMConvType.kTIMConv_C2C, message, messageId, (int code, string desc, Message data, string user_data) => {
// 处理回调逻辑
});

接收端发送消息已读回执

接收端收到消息后,可以通过消息对象 Messagemessage_need_read_receipt(点击查看详情) 字段判断消息是否需要已读回执,如果需要已读回执,当用户查看消息后,调用 MsgSendMessageReadReceipts(点击查看详情) 接口发送消息已读回执。
示例代码如下:
TIMResult res = TencentIMSDK.MsgSendMessageReadReceipts(msg_array, (int code, string desc, string user_data) => {
// 处理回调逻辑
});

发送端监听消息已读回执通知

接收端发送消息已读回执后,发送端可以通过 SetMsgReadedReceiptCallback(点击查看详情) 回调监听消息已读回执通知,在通知中更新 UI,例如更新为 “2 人已读”。
示例代码如下:
TIMResult res = TencentIMSDK.SetMsgReadedReceiptCallback(msg_array, (List<MessageReceipt> message_receipt, string user_data) => {
// 处理回调逻辑
});

发送端主动拉取消息已读回执信息

发送端从其他界面进入消息列表后,先拉取历史消息,再调用 MsgGetMessageReadReceipts(点击查看详情) 接口拉取消息已读回执信息。
示例代码如下:
TIMResult res = TencentIMSDK.MsgGetMessageReadReceipts(msg_array, (int code, string desc, List<MessageReceipt> message_receipt, string user_data) => {
// 处理回调逻辑
});

发送端主动拉取群消息已读或未读成员列表

发送端在需要查看群消息已读或未读成员列表时,可以调用 GetMsgGroupMessageReadMemberList(点击查看详情) 接口分页拉取消息已读或未读群成员列表。
TIMResult res = TencentIMSDK.MsgGetMessageReadReceipts(message, TIMGroupMessageReadMembersFilter.TIM_GROUP_MESSAGE_READ_MEMBERS_FILTER_READ, next_seq, 20, (List<GroupMemberInfo> json_group_member_array, ulong next_seq, bool is_finished, string user_data) => {
// 处理回调逻辑
});

交流与反馈

点此进入IM社群,享有专业工程师的支持,解决您的难题