sessionId
例如 p2p-cs1、team-113879441
云端置顶会话的扩展字段
删除指定的本地数据库会话。以及可选删除服务器上漫游消息。
nim.deleteLocalSession({
id: 'p2p-user1',
isLogic: false,
isDeleteRoaming: false,
done: function(err, session) {
if (err) {
console.log('删除本地会话失败', err)
} else {
console.log('删除本地会话成功', session)
}
}
})
入参
会话 id
是否需要删除此会话的服务器漫游消息, 默认 false。8.2.0 版本新增,写 true 的话,下次登录服务器不再下发此会话的漫游消息,此规则会影响多端登录的其他端,慎用。
是否为逻辑删除, 默认 false。7.9.1 版本新增,逻辑删除不会真的删除本地会话,而是标记会话为"已删除"状态,这样可以保留会话的unread和msgReceiptTime,下次新建该会话时,可以保持正确的未读数和已读时间戳
会话 id
取消云端置顶的会话。下次登录时,在初始化回调函数 onStickTopSessions 接收置顶会话列表。调用后,当前账户所有登录用户收到 onupdatesessions 回调
nim.deleteStickTopSession({
id: 'p2p-user1',
done: function(err, data) {
if (err) {
console.log('取消置顶会话失败', err)
} else {
console.log('取消置顶会话成功', data.stickTopSession)
}
}
})
sessionId
例如 p2p-cs1、team-113879441
通过 sessionId 获取本地数据库里的会话
nim.getLocalSession({
sessionId: 'p2p-user1',
done: function(err, session) {
if (err) {
console.log('获取本地会话失败', err)
} else {
console.log('获取本地会话成功', session)
}
}
})
分页查询会话列表
// 查询第一页会话列表
nim.getLocalSessions({
limit: 20,
reverse: true,
done: function(err, data) {
if (err) {
console.log('获取会话列表失败', err)
} else {
console.log('会话列表', data.sessions)
// 查询下一页
if (data.sessions.length > 0) {
var lastSession = data.sessions[data.sessions.length - 1]
// 使用 lastSession.id 作为 lastSessionId 查询下一页
}
}
}
})
上一页最后一条会话的 id,第一次查询可以不填。
分页查询数量限制,默认 100 条记录
查询顺序
false 从最早的会话开始查找
true 从最晚的会话开始查找
会话 id
获取云端置顶会话的列表
nim.getStickTopSessions({
done: function(err, sessions) {
if (err) {
console.log('获取置顶会话列表失败', err)
} else {
console.log('置顶会话列表', sessions)
}
}
})
往本地数据库 indexdb 中插入一个会话
如果不支持数据库, 则会在 sdk 内存中插入一条会话。不推荐没有 db 时使用该函数。用户应该在自己的内存数据中维护会话列表。
如果会话已存在, 那么会返回错误
如果有对应会话的本地历史消息, 那么会更新会话的 lastMsg 为最后一条消息
插入成功后, 会触发onupdatesession回调
nim.insertLocalSession({
scene: 'p2p',
to: 'user1',
done: function(err, session) {
if (err) {
console.log('插入本地会话失败', err)
} else {
console.log('插入本地会话成功', session)
}
}
})
重置所有会话的未读数。
注: !!如果不等待异步 done 结束而直接使用 updateLocalSession 更新本地会话会因为异步时机问题, 让未读数错乱.
nim.resetAllSessionUnread(function(err) {
if (err) {
console.log('重置所有会话未读数失败', err)
} else {
console.log('重置所有会话未读数成功')
}
})
异步完成(清除未读数)的回调. v9.20.12+ 才开始支持此参数.
取消 "setCurrSession" 的效果。取消后,会话收到消息后,未读数会变更。
重置某个会话的未读数。重置超级群未读数请使用 SessionInterface.resetSuperTeamSessionsUnread。
nim.resetSessionUnread('p2p-user1', function(err, failedSessionId) {
if (err) {
console.log('重置未读数失败', failedSessionId, err)
} else {
console.log('重置未读数成功')
}
})
重置某些会话的未读数。重置超级群未读数请使用 SessionInterface.resetSuperTeamSessionsUnread
nim.resetSessionsUnread(['p2p-user1', 'p2p-user2', 'team-123'], function(err) {
if (err) {
console.log('批量重置未读数失败', err)
} else {
console.log('批量重置未读数成功')
}
})
重置某些超级群的会话的未读数
nim.resetSuperTeamSessionsUnread(['superTeam-123', 'superTeam-456'], function(err) {
if (err) {
console.log('重置超级群未读数失败', err)
} else {
console.log('重置超级群未读数成功')
}
})
设置"进入当前会话".
注:这是 sdk 的一个便于操作的复合接口,做的逻辑有:在内存里记录当前进入的会话,进入会话时调用 resetSessionUnread 清空未读,且后续 onMsg 接收新消息时 resetSessionUnread 清空未读。
注2:如果不满足开发者的场景,开发者可以组合调用 API,须小心接到新消息而触发的 onupdatesessions 变更时,忽略当前选中的会话的 unread 数变更。
注3: !!如果不等待异步 done 结束而直接使用 updateLocalSession 更新本地会话会因为异步时机问题, 让未读数错乱.
nim.setCurrSession('p2p-user1', function(err) {
if (err) {
console.log('设置当前会话失败', err)
} else {
console.log('设置当前会话成功,未读数已清零')
}
})
会话 id入参
异步完成(清除未读数)的回调. v9.20.12+ 才开始支持此参数.
更新本地数据库里的会话
nim.updateLocalSession({
id: 'p2p-user1',
localCustom: '{"pinned": true}',
needNotify: true,
done: function(err, session) {
if (err) {
console.log('更新本地会话失败', err)
} else {
console.log('更新本地会话成功', session)
}
}
})
入参
会话 id
本地扩展字段
是否触发onupdatesession或onupdatesessions回调,默认是true
完整漫游消息列表中最早的一条消息,即在这条消息之后的本地消息列表是完整的
更新云端置顶的会话(目前仅能更新它的扩展字段)。调用后,当前账户所有登录用户收到 onupdatesessions 回调
nim.updateStickTopSession({
id: 'p2p-user1',
topCustom: '更新后的置顶备注',
done: function(err, data) {
if (err) {
console.log('更新置顶会话失败', err)
} else {
console.log('更新置顶会话成功', data.stickTopSession)
}
}
})
sessionId
例如 p2p-cs1、team-113879441
云端置顶会话的扩展字段
添加云端置顶的会话。下次登录时,在初始化回调函数
onStickTopSessions接收置顶会话列表。调用后,当前账户所有登录用户收到onupdatesessions回调关联函数
示例