您当前查看的是 4.X 版本 SDK 文档。如需查看最新 5.X SDK 文档,可在右侧进行切换。
升级说明
更新时间:2024-01-16
PDF
- 本文面向 IMLib v3/v4 开发者,旨在为 IMLib 开发者升级至 v4-adapter 提供引导。
- 对于使用 IMLib v2 的用户来说,不建议升级至 v4-adapter 版本。
关于停止维护 IMLib v4 旧版 SDK 的声明
注意:
- Web IMLib v4 版本目前已停止维护,建议您优先选择最新的 IMLib 版本。
- 已集成 IMLib v4 版本的用户,转为使用 Adapter 方式进行支持。集成旧版 4x SDK 的客户可以通过
RongIMLib-v4-Adapter
无缝替换升级。详见 升级说明。 - 未来我们将在
RongIMLib-v4-Adapter
上进行问题修复,但不会增加新功能。
IMLib 4.x 替换为 v4-adapter
浏览器兼容性
Chrome | Firefox | Safari | Edge | QQ 浏览器 | 微信 浏览器 | Android | IE |
---|---|---|---|---|---|---|---|
✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | 4.4+ | 9+ |
引入 SDK
修改 NPM 包
原 @rongcloud/imlib-v4
包已停止维护,请使用 @rongcloud/imlib-v4-adapter
替代。
依赖安装
# 移除旧版本依赖 npm rm @rongcloud/imlib-v4 @rongcloud/engine # 安装 adapter-v4 npm install @rongcloud/engine@latest @rongcloud/imlib-v4-adapter@latest -S
已复制1
2
3
4代码集成
// CMD // const RongIMLib = require('@rongcloud/imlib-v4') 需修改为 const RongIMLib = require('@rongcloud/imlib-v4-adapter') // ES // import * as RongIMLib from '@rongcloud/imlib-v4' 需修改为 import * as RongIMLib from '@rongcloud/imlib-v4-adapter'
已复制1
2
3
4
5
6
7
8
修改 CDN 引入链接
原 RongIMLib-4.x.x.prod.js
SDK 已停止维护,请使用 RongIMLib-v4-Adapter
的最新版本替代。
RongIMLib-v4-Adapter
的最新版本可参见引入 SDK。
IMLib 3.x 升级 v4-adapter
引入 SDK
修改 NPM 包
依赖安装
npm install @rongcloud/engine@latest @rongcloud/imlib-v4-adapter@latest -S
已复制1代码集成
// CMD const RongIMLib = require('@rongcloud/imlib-v4-adapter') // ES import * as RongIMLib from '@rongcloud/imlib-v4-adapter'
已复制1
2
3
4
5
6
修改 CDN 引入链接
原 RongIMLib-3.x.x.prod.js
SDK 已停止维护,请使用 RongIMLib-v4-Adapter
的最新版本替代。
RongIMLib-v4-Adapter
的最新版本可参见引入 SDK。
接口变更
发送自定义消息
变更流程说明
发送自定义消息由直接发送变更为:先注册自定义消息再发送自定义消息,详细如下
- 注册自定义消息
- 注册自定义消息代码必须在发送、接收该自定义消息之前
- 推荐将所有注册自定义消息代码放在
init
方法之后,connect
方法之前 - 注册的消息类型名, 必须多端一致, 否则消息无法互通
- 请勿使用
RC:
开头的类型名,以免和 SDK 默认的消息名称冲突
代码示例
// 初始化 IM
var config = {
appkey: ' ',
};
var im = RongIMLib.init(config);
// 注册自定义消息
var messageType = 's:person'; // 自定义消息类型
var isPersited = true; // 自定义消息存储属性
var isCounted = true; // 自定义消息计数属性
im.registerMessageType(messageType, isPersited, isCounted);
已复制
1
2
3
4
5
6
7
8
9
10
11
- 发送自定义消息
代码示例
var conversation = im.Conversation.get({
targetId: '接收方的 userId',
type: RongIMLib.CONVERSATION_TYPE.PRIVATE
});
conversation.send({
messageType: 's:person', // 填写开发者定义的 messageType
content: { // 填写开发者定义的消息内容
name: 'RongCloud',
age: 12
}
}).then(function(message){
console.log('发送 s:person 消息成功', message);
});
已复制
1
2
3
4
5
6
7
8
9
10
11
12
13
自定义消息存储、计数属性说明
发消息:
- 是否是内置消息,内置消息以内置消息的存储、计数配置为准
- 是否是已注册的消息,已注册的消息以注册时的存储、计数配置为准
- 其他消息,以消息发送接口传参为准,未传
isCounted
、isPersited
时均默认为 false
收消息:
- 是否是内置消息,内置消息以内置消息的存储、计数配置为准
- 是否是已注册消息,已注册的消息以注册时的存储、计数配置为准
- 其他消息,以接收的服务器数据为准
发送 @ 消息
变更输入参数说明
废弃参数 | 当前参数 | 类型 | 必填 | 默认值 | 说明 | 最低版本 |
---|---|---|---|---|---|---|
isMentioned | Boolean | 否 | false | 是否为 @ 消息 | 4.0.0 | |
mentionedType | Number | 否 | 1 | @ 类型 1: @ 所有人 2: @ 指定用户 | 4.0.0 | |
mentionedUserIdList | Array | 否 | -- | @ 用户 id 列表 | 4.0.0 |
代码示例
var conversation = im.Conversation.get({
targetId: '群组 ID',
type: RongIMLib.CONVERSATION_TYPE.GROUP
});
conversation.send({
messageType: RongIMLib.MESSAGE_TYPE.TEXT, // 填写开发者定义的 messageType
content: {
content: 'Hello RongCloud' // 文本内容
},
isMentioned: true,
mentionedType: RongIMLib.MENTIONED_TYPE.ALL,
mentionedUserIdList:['user1']
}).then(function(message){
console.log('发送消息成功', message);
});
已复制
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
获取历史消息
- 单聊、群聊获取历史消息
变更输入参数说明
废弃参数 | 当前参数 | 类型 | 必填 | 默认值 | 说明 | 最低版本 |
---|---|---|---|---|---|---|
timestamp | Number | 否 | 0 | 获取时间戳. 0 为从当前最新时间拉取 | 4.0.0 |
代码示例
var conversation = im.Conversation.get({
targetId: '接收方的 userId',
type: RongIMLib.CONVERSATION_TYPE.PRIVATE // 群聊可传入 RongIMLib.CONVERSATION_TYPE.GROUP
});
var option = {
timestamp: +new Date(), // 获取时间戳
count: 20 // 获取条数
};
conversation.getMessages(option).then(function(result){
var list = result.list; // 历史消息列表
var hasMore = result.hasMore; // 是否还有历史消息可以获取
console.log('获取历史消息成功', list, hasMore);
});
已复制
1
2
3
4
5
6
7
8
9
10
11
12
13
14
变更回调参数 list.message 属性说明
废弃字段 | 当前字段名 | 类型 | 说明 |
---|---|---|---|
isMentioned | Boolean | 是否为 @ 消息 |
- 聊天室获取历史消息
变更输入参数说明
废弃参数 | 当前参数 | 类型 | 必填 | 默认值 | 说明 | 最低版本 |
---|---|---|---|---|---|---|
timestamp | Number | 否 | 0 | 获取时间戳. 0 为从当前最新时间拉取 | 4.0.0 |
代码示例
var chatRoom = im.ChatRoom.get({
id: 'chatRoom1'
});
var option = {
timestamp: +new Date(), // 获取时间戳
count: 20 // 获取条数
};
chatRoom.getMessages(option).then(function(result){
var list = result.list; // 历史消息列表
var hasMore = result.hasMore; // 是否还有历史消息可以获取
console.log('获取聊天室历史消息成功', list, hasMore);
});
已复制
1
2
3
4
5
6
7
8
9
10
11
12
变更回调参数 list.message 属性说明
废弃字段 | 当前字段 | 类型 | 说明 |
---|---|---|---|
isMentioned | Boolean | 是否为 @ 消息 |
获取会话列表
变更回调参数 conversationList.conversation 属性说明
废弃字段 | 当前字段 | 类型 | 说明 |
---|---|---|---|
hasMentioned | Boolean | 是否包含 @ 自己的消息 | |
isMentioned | Boolean | 是否为 @ 消息 | |
mentionedInfo | Object | @ 信息 |
废弃属性
非标准接口
旧版本 SDK 顶级变量下暴露了 SDK 内部使用的部分接口,不建议开发者直接持有引用,具体如下:
RongIMLib.Logger
日志上传接口RongIMLib.common
公共方法集RongIMLib.env
环境配置