本文介绍了组件事件和与组件事件相关接口的功能。
音视频通话组件
组件标签:rtc
组件描述:用于 Flex 模式的音视频通话接入。
组件属性
属性名称 | 参数类型 | 是否必填 | 默认值 | 说明 |
---|---|---|---|---|
config | Object | 否 | 无 | Config 对象。 |
currentUserId | String | 否 | 无 | 当前用户的 uid,当前播放的内容可以通过这个参数传入 UserId 进行切换。 |
组件事件
事件名称 | 事件描述 |
---|---|
onPlayerChange | 用户播放界面切换事件。 |
onUserChange | 用户变化事件。 |
onHangup | 挂断事件。 |
onError | 通用报错。 |
引入组件
{
"usingComponents": {
"rtc": "plugin://rtc/flex"
}
}
使用组件
<rtc
config="{{ config }}"
currentUserId="{{ currentUserId }}"
onPlayerChange="handlePlayerChange"
onUserChange="handleUserChange"
onHangup="handleHangup"
onError="handleError"
/>
参数说明
config
参见 重要参数 说明。currentUserId
当前播放的内容可以通过这个参数传入 userId 进行切换。onPlayerChange(userId: string, preUserId: string): void
用户播放界面切换事件。onUserChange(state: UserState): void
用户变化事件。onError(error: Error): void
通用报错。onHangup(): void
挂断事件。
UserState 对象
interface UserState {
joined: string[] // 加入的用户列表
exited: string[] // 退出的用户列表
users: string[] // 当前房间内的用户列表
current?: string // 当前播放内容的用户 ID
}
Config 参见 重要参数 说明。
接口列表
invite
接口描述:邀请用户加入通话。入参 如下表所示。
参数名称 | 参数类型 | 是否必填 | 默认值 | 说明 |
---|---|---|---|---|
userId | String | 否 | 无 | 用户 uid |
参数名称 | 参数类型 | 是否必填 | 默认值 | 描述 |
---|---|---|---|---|
inviteInfo | Object | 否 | 无 | InviteInfo 对象 |
InviteInfo 对象:邀请接口可选的参数,用于描述被邀请人展示的内容。
interface InviteInfo {
nickName?: string // 邀请人昵称
page?: string // 小程序的落地页
inviteType?: InviteType // 被邀请人类型(0: web, 1: app), 默认为 1
roomType?: RoomType // 房间类型(1: 音视频通话, 2: 音频通话),默认为 1
params?: Record<string, unknown> | null
}
join
接口描述:加入视频通话。入参 如下表所示。
参数名称 | 参数类型 | 是否必填 | 默认值 | 说明 |
---|---|---|---|---|
roomId | String | 是 | 无 | 无 |
参数名称 | 参数类型 | 是否必填 | 默认值 | 说明 |
---|---|---|---|---|
config | Object | 否 | 无 | Config 对象,参见 重要参数。 |
出参
参数名称 | 参数类型 | 说明 |
---|---|---|
RoomInfo | Object | Promise |
const { rtc } = requirePlugin('rtc')
// 加入的人调用这个 API
rtc.join(roomId, config) // config 是需要的参数,参见
重要参数
。
获取 RoomInfo
视频通话由一方发起,发起后得到 RoomInfo,用于后续其他人加入,获取 RoomInfo 有两种方式(选择其中一种即可)。
通过 api
join
,调用后返回Promise<RoomInfo>
。rtc.start(config).then(roomInfo => { const { roomId, token } = roomInfo // 这里拿到创建的 roomId 和 token,用于后续其他人加入使用 })
通过
ROOM_CREATED
事件得到。rtc.on(EventType.ROOM_CREATED, data => { // 这里拿到发起人创建的 roomId 和 token,用于后续其他人加入使用 const { roomId, token } = data })
Config 对象参见 重要参数 说明。
on
接口描述:监听通话事件。入参 如下表所示。
参数名称 | 参数类型 | 是否必填 | 默认值 | 说明 |
---|---|---|---|---|
type | Object | 否 | 无 | 事件类型 |
参数名称 | 参数类型 | 是否必填 | 默认值 | 说明 |
---|---|---|---|---|
handler | Any | 否 | 无 | 回调函数 |
const { rtc, EventType } = requirePlugin('rtc')
rtc.on(EventType.ROOM_CREATED, data => {
// 这里拿到发起人创建的 roomId 和 token,用于后续其他人加入使用
const { roomId, token } = data
})
start
接口描述:发起视频通话。入参 如下表所示。
参数名称 | 参数类型 | 是否必填 | 默认值 | 说明 |
---|---|---|---|---|
confiig | Object | 否 | 无 | Config 对象,参见 重要参数。 |
出参
参数名称 | 参数类型 | 说明 |
---|---|---|
RoomInfo | Object | Promise |
const { rtc } = requirePlugin('rtc')
// 发起人调用这个 API
rtc.start(config).then(roomInfo => {
const { roomId, token } = roomInfo
// 这里拿到创建的 roomId 和 token,用于后续其他人加入使用
})
Config 对象参见 重要参数 说明。