MsgGetMsgList
(Details)说明:在拉取云端历史消息时,如果检测到网络异常,SDK 会返回本地存储的历史消息。
本地存储的历史消息无时间显示,但云端存储的历史消息有存储时长的限制:
说明:
- 延长历史消息存储时长是增值服务,您可以登录 即时通信 IM 控制台 修改相关配置,具体计费说明请参加 增值服务资费 。
- 富媒体消息(图片、文件、语音等)对应的文件存储时长,与历史消息存储时长保持一致。
您可以调用接口 MsgGetMsgList
(Details) 获取单聊历史消息。
在网络正常的情况下会拉取最新的云端数据。如果网络出现异常,SDK 会返回本地存储的历史消息。
本接口支持分页拉取,参考:分页拉取。
示例代码如下:
// 拉取单聊历史消息
// 首次拉取,msg_getmsglist_param_last_msg 设置为 null
// 再次拉取时,msg_getmsglist_param_last_msg 可以使用返回的消息列表中的最后一条消息
var get_message_list_param = new MsgGetMsgListParam
{
msg_getmsglist_param_last_msg = LastMessage
};
TIMResult res = TencentIMSDK.MsgGetMsgList(conv_id, TIMConvType.kTIMConv_C2C, get_message_list_param, (int code, string desc, string user_data) => {
// 处理回调逻辑
});
您可以调用接口 MsgGetMsgList
(Details) 获取群聊历史消息。
在网络正常的情况下会拉取最新的云端数据。如果网络出现异常,SDK 会返回本地存储的历史消息。
本接口支持分页拉取,参考:分页拉取。
注意:
- 只有会议群(Meeting)才能拉取到进群前的历史消息,更多关于群消息的限制,详见 消息能力差异 。
- 直播群(AVChatRoom)消息不存云端漫游和本地数据库,调用这个接口无效。
示例代码如下:
// 拉取群聊历史消息
// 首次拉取,msg_getmsglist_param_last_msg 设置为 null
// 再次拉取时,msg_getmsglist_param_last_msg 可以使用返回的消息列表中的最后一条消息
var get_message_list_param = new MsgGetMsgListParam
{
msg_getmsglist_param_last_msg = LastMessage
};
TIMResult res = TencentIMSDK.MsgGetMsgList(conv_id, TIMConvType.kTIMConv_Group, get_message_list_param, (int code, string desc, string user_data) => {
// 处理回调逻辑
});
拉取单聊历史消息、拉取群聊历史消息 均可以按照相同的方式实现分页,即使用 msg_getmsglist_param_last_msg
和 msg_getmsglist_param_count
来实现。
msg_getmsglist_param_last_msg
和 msg_getmsglist_param_count
来实现分页。第一次拉取时 msg_getmsglist_param_last_msg
可以设置为空,使用消息列表中返回来最后一条消息作为下一次拉取的 msg_getmsglist_param_last_msg
从而拉去下一页数据。msg_getmsglist_param_last_msg
设置为空时,SDK 会默认从最新的消息开始返回。msg_getmsglist_param_last_msg
后,返回的消息列表不包含设置的 msg_getmsglist_param_last_msg
。说明:
- 为了不影响历史消息拉取速度,建议分页时
msg_getmsglist_param_count
设置为 20。- 由于返回的消息列表会包含
msg_getmsglist_param_last_msg_seq
所对应的消息,所以在拉取群聊历史消息时,不建议使用msg_getmsglist_param_last_msg_seq
来续拉。
在群聊会话中,收到群 @ 消息后,一般需要通过点击群 @ 提示条,跳转到群 @ 消息的位置,并拉取附近的消息列表用于显示。
由于群 @ 消息本身也需要显示,可以将 msg_getmsglist_param_last_msg_seq 设置成群 @ 消息的 sequence
,并使用 MsgGetMsgList
来拉取。
SDK 目前的策略是:
为了尽可能的减少此类限频机制对业务层的影响,您可以使用如下措施来减少无效消息的产生:
message_is_online_msg
字段设置为 YES/true
。当 getType 设置成拉云端历史消息,且拉取 msg_getmsglist_param_count 条消息时,SDK 会做如下操作:
一般出现消息 “丢失” 时,指的是在第 2 步中拉取的无效消息过多,导致触发了 问题 1 中的限频机制 ,从而导致实际拉取的云端消息不够。
建议按照 问题 1 中的解决方法 来处理,如果仍然无法解决,欢迎加入 QQ 群(764231117)反馈。
如果您需要获取最新的群成员信息,您可以使用 GroupGetMemberInfoList
(Details)。
SDK 内部已对消息拉取做了性能优化,您如果碰到消息卡顿的情况,可以先尝试减少拉取的消息数 msg_getmsglist_param_count
,如果还是不能解决问题,欢迎加入 QQ 群(764231117)反馈。
本页内容是否解决了您的问题?