获取历史信息
环信即时通讯 IM 供给信息漫游功能,即将用户的所有会话的历史信息保留在信息服务器,用户在任何一个终端设备上都能获取到历史信息,运用户在多个设备切换运用的状况下亦能保持一致的会话场景。
本文介绍环信即时通讯 IM SDK 怎样从服务器获取历史信息。
技术原理
利用环信即时通讯 IM SDK 可从服务器获取历史信息,重点办法如下:
前提要求
起始前,请保证已完成 SDK 初始化并连接到服务器,详见 快速起始。
实现办法 从服务器获取指定会话的历史信息
你能够调用 getHistoryMessages 办法基于 searchOptions 参数对象准许用户按信息发送方、信息类型或时间段从服务器分页拉取历史信息。为保证数据靠谱,咱们意见你每次最多获取 50 条信息,可多次获取。
针对群组聊天,你能够经过设置 searchOptions 对象中的 from 参数拉取群组中单个成员发送的历史信息。
提示
若运用该 API,需将 SDK 版本升级至 V4.1.6 版本或以上。默认可获取单聊和群组聊天的历史消息。若要获取聊天室的历史信息,需联系环信商务。历史信息和离线信息在服务器上的存储时间与你订阅的套餐包相关,详见。各类事件通告发送时,若接收的用户离线时,事件通告的存储时间与离线信息的存储时间一致,即亦取决于你订阅的套餐包。 connection.getHistoryMessages({ targetId: targetId, // 单聊为对端用户 ID,群组聊天为群组 ID。chatType:groupChat,// 会话类型:单聊、群组聊天和聊天室分别为 `singleChat`、`groupChat` 和 `chatRoom`。pageSize:20,// 每次获取的信息数量,取值范围为 [1,50],默认值为 `20`。searchDirection:down,// 信息搜索方向。`up` 暗示按信息时间戳递减的方向获取,即先获取最新信息;`down` 暗示按信息时间戳递增的方向获取,即先获取最老的信息。searchOptions:{from:message sender userID,// 信息发送方的用户 ID。该参数仅用于群组聊天。msgTypes:[txt],// 要获取的信息类型的数组。若不传值,会获取所有类型的信息。startTime:newDate(2023,11,9).getTime(),// 查找的初始时间戳,单位为毫秒。endTime:newDate(2023,11,10).getTime(),// 查找的结束时间戳,单位为毫秒。},});
另外,你能够调用 getHistoryMessages 办法从服务器获取指定会话的历史信息。你能够指定信息查找方向,即知道按时间次序或逆序获取。
为保证数据靠谱,咱们意见你每次最多获取 50 条信息,可多次获取。 letoptions= { // 对方的用户 ID 或群组 ID 或聊天室 ID。targetId:"user1",// 每页期望获取的信息条数。取值范围为 [1,50],默认值为 20。pageSize:20,// 查找的初始信息 ID。若该参数设置为 `-1`、`null` 或空字符串,从最新信息起始。cursor:-1,// 会话类型:(默认) `singleChat`:单聊;`groupChat`:群聊;`chatRoom`:聊天室chatType:"groupChat",// 信息搜索方向:(默认)`up`:按服务器收到信息的时间的逆序获取;`down`:按服务器收到信息的时间的正序获取。searchDirection:"up",};WebIM.conn .getHistoryMessages(options).then((res)=>{// 成功获取历史信息。 console.log(res);}).catch((e)=>{// 获取失败。});
|