IM 即时通讯
Web
产品介绍
简介
主要功能
产品优势
海外数据中心
IM平滑迁移方案
接口及业务限制
功能介绍
帐号集成与登录
基础消息功能
群组功能
聊天室功能
聊天室标签功能
多端登录与互踢策略
质量数据监控台
体验 Demo
下载 SDK 与 Demo 源码
更新日志
IM UIKit 更新日志
NIM SDK 开发版更新日志
NIM SDK 稳定版更新日志
快速开始
跑通 IM Demo 源码
实现 IM 文本消息收发(不含 UI)
含 UI 集成
什么是 IM UIKit
IM UIKit 功能概览
快速集成 IM UIKit
非React框架集成 IM UIKit
组件导入
初始化
全局上下文
登录相关
实现消息收发及界面自定义
集成会话列表界面
集成会话消息界面
集成用户资料组件
集成通讯录界面
集成搜索组件
非 React 框架自定义渲染
主题样式设置
语言设置
初始化(兼容 NIM SDK)
不含 UI 集成
集成 SDK
浏览器环境集成
Node.js集成
初始化与登录相关
初始化与登录 IM
IM 连接相关
多端登录与互踢
消息相关
消息概述
消息收发
消息配置选项
广播消息收发
消息已读回执
消息撤回
消息重发与转发
本地消息
通知消息
群通知消息
超大群通知消息
历史消息
最近会话
用户资料托管
好友关系托管
用户关系托管
在线状态订阅
群组功能
群组概述
群组管理
群成员管理
群消息管理
超大群功能
系统通知
系统通知概述
内置系统通知管理
内置系统通知未读数
自定义系统通知收发
开通聊天室功能
聊天室
反垃圾(内容审核)
域名高可用
融合存储方案
扩展功能
工具方法
最佳实践
聊天室重要消息投递
API参考
SDK API (Web)
IM UIKit Store API
状态码
IM 控制台指南
创建应用
注册 IM 账号
升级服务
开通聊天室功能
配置应用客户端标识
常见问题
FAQ
服务协议

历史消息

更新时间: 2023/03/24 10:12:23

本地历史记录

  • 在支持数据库的时候, SDK 会将消息存储于数据库中
  • 当开发者发现会话的未读数大于消息数量时, 说明有未读消息存储于数据库里面, 需要调用获取本地历史记录接口getLocalMsgs来获取更多消息

获取本地历史记录

  • 仅从数据库查询本地消息。
  • 如果不支持数据库,算成功,返回 null

参数说明

  • sessionId 如果提供该参数, 那么只查询该会话的消息。
  • sessionIds 如果提供该参数, 那么将查询该部分会话的消息总和中的limit条消息,而非每个session均返回符合条件的limit条消息。
  • start 表示查询开始时间(默认值0,表示不限制开始时间)。
  • end 表示结束时间(默认值为Infinity,表示不限制结束时间),可以传入13位的UTC时间戳(对应毫秒)。
  • desc 表示查询方向,默认值为true表示从end开始查(查询结果按时间戳从大到小排列),设置为false表示从start开始查(查询结果按照时间戳从小到大排列)。
  • limit 表示可获取的历史消息的数量限制
  • type 消息类型, 如果提供该参数, 那么查询该类型的消息
  • types 如果提供该参数, 那么查询这几种类型的消息
  • keyword 如果提供参数, 那么查询匹配该关键词的消息
nim.getLocalMsgs({
  sessionId: 'p2p-account',//表示单聊场景(p2p),对方账号为account。
  limit: 100,
  done: getLocalMsgsDone
})
function getLocalMsgsDone(error, obj) {
  console.log('获取本地消息' + (!error?'成功':'失败'), error, obj)
}

获取 idClient 对应的本地消息

  • 从数据库查询指定的消息
  • 如果不支持数据库,算成功,返回 null
  • 参数解释
    • idClient:用户 ID
nim.getLocalMsgByIdClient({
    idClient: 'd7a1b2c63066e1038e9aa01321652370',
    done: getLocalMsgByIdClientDone
});
function getLocalMsgByIdClientDone(error, obj) {
    console.log(error);
    console.log(obj);
    console.log('获取本地消息' + (!error?'成功':'失败'));
    if (!error) {
        console.log(obj.msg);
    }
}

获取 idClients 对应的本地消息

  • 如果不支持数据库, 算成功, 返回空数组
nim.getLocalMsgsByIdClients({
    idClients: [
        'd7a1b2c63066e1038e9aa01321652370',
        '22e604c7811c23586355f63f24658525'
    ],
    done: getLocalMsgsByIdClientsDone
});
function getLocalMsgsByIdClientsDone(error, obj) {
    console.log(error);
    console.log(obj);
    console.log('获取本地消息' + (!error?'成功':'失败'));
    if (!error) {
        console.log(obj.msgs);
    }
}

更新本地消息

  • 在数据库更新 idClient 对应的本地消息
  • 如果不支持数据库, 算成功
  • 如果对应的消息不存在, 算成功, 返回 null
  • 这些字段只会被更新到本地数据库, 不会被更新到服务器上
  • 参数解释
    • localCustom:本地可扩展字段
 nim.updateLocalMsg({
     idClient: 'p2p-idClient',
     localCustom: '{"key","value"}',
     done: updateLocalMsgDone
 });
 function updateLocalMsgDone(error, obj) {
     console.log(error);
     console.log(obj);
     console.log('更新本地消息' + (!error?'成功':'失败'));
 }

删除本地消息

  • 在内存(提前同步)中删除指定消息
  • 若支持数据库,在数据库中也删除指定消息
  • 如果对应的消息不存在, 算成功
nim.deleteLocalMsg({
    msg: msg,
    done: deleteLocalMsgDone
});
function deleteLocalMsgDone(error, obj) {
    console.log('删除本地消息' + (!error?'成功':'失败'), error, obj);
}

删除某个会话的本地消息

  • 在内存中删除指定会话的消息
  • 若支持数据库,则在数据库中也删除指定会话的消息
  • 参数解释
    • scene场景,'p2p''team'
    • to聊天对象, 账号或者群id。
    • delLastMsgbool类型,指是否同时删除本地会话对象中的lastMsg,默认false
nim.deleteLocalMsgsBySession({
    scene: 'p2p',
    to: 'account',
    delLastMsg: true,
    done: deleteLocalMsgsBySessionDone
});
function deleteLocalMsgsBySessionDone(error, obj) {
    console.log(error);
    console.log(obj);
    console.log('删除会话本地消息' + (!error?'成功':'失败'));
}

删除所有本地消息

-删除内存和数据库中的所有消息

nim.deleteAllLocalMsgs({
    done: deleteAllLocalMsgsDone
});
function deleteAllLocalMsgsDone(error, obj) {
    console.log(error);
    console.log(obj);
    console.log('删除所有本地消息' + (!error?'成功':'失败'));
}

云端历史记录

获取云端历史记录

  • 获取某个会话的历史记录, 会在结果回调函数done里面接收到消息数组
  • 参数解释
    • scene: 请参考消息场景
    • to: 帐号或者群id
    • beginTime: 表示查询开始时间(默认值0表示不限制开始时间),。
    • endTime: endTime表示结束时间(默认值为服务器当前时间),可以传入13位的UTC时间戳(对应毫秒)。
    • lastMsgId: 以某条消息为起点进行查询,与beginTimeendTime时间参数搭配使用,时间参数二选一取决于reverse参数。查询时,时间参数设置为该条消息的timelastMsgId设置为该条消息的idServer,查询结果不包含该条消息
    • limit: 本次查询的消息数量限制, 最多100条, 默认100条
    • reverse: 默认false表示从endTime开始往前查找历史消息; true表示从beginTime开始往后查找历史消息
    • asc: 表示对查询结果按照时间进行排序的方式: 如果asc和reverse设置相同(都为true,或者都为false),查询结果按照时间戳从大到小;如果asc和reverse设置不同,查询结果按照时间戳从小到大。
    • lastMsgId表示作为查询起点的那条消息的idServer(查询结果不会包含该消息): 如果reverse为false(默认值),那么设置lastMsgId的同时必须设置endTime参数为该消息对应的time属性。 如果reverse为true,那么设置lastMsgId的同时必须设置beginTime参数为该消息对应的time属性。
  • 该接口用于获取一段时间内的历史消息, 由参数beginTimeendTime来控制时间范围。
    • reversefalse时, 后续查询的endTime对应上次查询的最后一条消息的time字段
    • reversetrue时, 后续查询的beginTime对应上次查询的最后一条消息的time字段
nim.getHistoryMsgs({
    scene: 'p2p',
    to: 'a2',
    done: getHistoryMsgsDone
});
function getHistoryMsgsDone(error, obj) {
    console.log('获取p2p历史消息' + (!error?'成功':'失败'));
    console.log(error);
    console.log(obj);
    if (!error) {
        console.log(obj.msgs);
    }
}

删除点对点云端历史记录

  • 参数解释
    • account: 必填,对方帐号。删除后,自己不能再查询到和对方的聊天记录,不影响对方查询。清除时间以服务器接收请求时间为准。
    • delRoam: 默认true,表示是否同时删除漫游。
nim.clearServerHistoryMsgs({
    account: 'xxx',
    delRoam: false,
    done: clearServerHistoryMsgsDone
});
function clearServerHistoryMsgsDone(error, obj) {
    console.log('删除服务器消息' + (!error?'成功':'失败'), error, obj);
}
此文档是否对你有帮助?
有帮助
我要吐槽
  • 本地历史记录
  • 获取本地历史记录
  • 参数说明
  • 获取 idClient 对应的本地消息
  • 获取 idClients 对应的本地消息
  • 更新本地消息
  • 删除本地消息
  • 删除某个会话的本地消息
  • 删除所有本地消息
  • 云端历史记录
  • 获取云端历史记录
  • 删除点对点云端历史记录