小程序(H5)接入腾讯IM
前言
腾讯IM
是腾讯推出的即时通讯SDK
,能在多端进行接入,用于聊天这类应用场景。
小程序接入腾讯IM
相关准备
-
小程序需要事先添加一个
request 合法域名
:https://webim.tim.qq.com
;因为SDK
依赖这个域名的接口进行消息监听等操作。 -
在小程序项目中安装完
tim-js-sdk
这个包之后,还需要在开发者工具中进行构建npm操作: -
业务需要提供
SDKAppID
(IM
应用ID
),userSig
(用户密钥),userID
(用户id
)以及groupID
(群组id
);
接入步骤
这里以小程序的
IM
群组消息接收业务场景为例;H5
的接入步骤类似,因为API
一致,只不过SDK
的包名有所不同。
-
引入
SDK
;1
import TIM from 'tim-wx-sdk'
-
根据接口获取
IM
初始化所需的配置(包括SDKAppID
和userSig
)并初始化;1
2
3
4
5const config = await api.getIMConfig() // 获取IM配置
const tim = TIM.create({
SDKAppID: config.appId // 应用id
}) // 创建实例
tim.setLogLevel(1) // sdk日志输出级别, 0则开启全部;根据需要配置 -
注册监听事件,如
SDK
加载完成和消息接收等事件;1
2
3
4
5
6
7
8
9
10
11
12
13tim.on(TIM.EVENT.SDK_READY, e => { // SDK 进入 ready 状态时触发
console.log('ready', e)
// 一些SDK的API必须在ready事件触发后才能执行!
})
tim.on(TIM.EVENT.MESSAGE_RECEIVED, e => { // SDK 收到推送的单聊、群聊、群提示、群系统通知的新消息,可通过遍历 event.data 获取消息列表数据并渲染到页面
console.log('received', e)
if (Array.isArray(e.data)) {
e.data.forEach(item => {
parseMessage(item) // 解析IM消息
})
}
}) -
登录
IM
账号; -
登录成功后加入到对应群组;
1
2
3
4
5
6
7
8
9
10
11
12
13tim.login({ // 登录到IM
userID: userID,
userSig: userSig
}).then(res => {
console.log('login', res)
return tim.joinGroup({ // 加入到对应的群组
groupID: groupID, // 群组id
applyMessage: 'wechat',
type: TIM.TYPES.GRP_AVCHATROOM // 群组类型:音视频聊天,根据业务需求选择
})
}).then(res => {
console.log('group', res)
})群组类型以下几种:
- TIM.TYPES.GRP_PUBLIC(公开群)
- TIM.TYPES.GRP_CHATROOM (聊天室)
- TIM.TYPES.GRP_AVCHATROOM (音视频聊天室)
-
解析消息:
IM
返回消息有系统消息和自定义消息两种,这个根据实际业务定制的消息结构进行解析即可。
发送消息需要引入另一个包cos-wx-sdk-v5
,其他SDK
的功能可以查看这个文档:https://imsdk-1252463788.file.myqcloud.com/IM_DOC/Web/SDK.html