TUICallKit API 是音视频通话组件的含 UI 接口,使用TUICallKit API,您可以通过简单接口快速实现一个类微信的音视频通话场景,更详细的接入步骤,详情请参见 快速接入 TUICallKit。
API 概览
API | 描述 |
登录 | |
登出 | |
设置用户的昵称、头像 | |
发起 1v1 通话 | |
发起群组通话 | |
主动加入当前的群组通话中 | |
设置自定义来电铃音 | |
开启/关闭静音模式 | |
开启/关闭悬浮窗功能 | |
开启/关闭来电横幅显示,v2.3.1+ 支持 | |
隐藏 Call 原生按钮。v2.7.0+支持 | |
新增自定义按钮,点击时会抛出 CustomViewClickEvent 事件。v2.7.0+支持 | |
修改自定义按钮的内容。v2.7.0+支持 | |
移出自定义按钮。v2.7.0+支持 | |
打开悬浮窗,需要开启相关授权。v2.7.0+支持 |
API 详情
login
登录
const TUICallKit = uni.requireNativePlugin('TencentCloud-TUICallKit');const options = {SDKAppID: 0,userID: 'mike',userSig: '',};TUICallKit.login(options, (res) => {if (res.code === 0) {console.log('login success');} else {console.log(`login failed, error message = ${res.msg}`);}});
参数 | 类型 | 含义 |
options | Object | 初始化参数 |
options.SDKAppID | Number | 用户 SDKAppID |
options.userID | String | 用户 ID |
options.userSig | String | 用户签名 userSig |
callback | Function | 回调函数,code = 0 表示调用成功;code != 0 表示调用失败,失败原因见 msg |
logout
登出
const TUICallKit = uni.requireNativePlugin('TencentCloud-TUICallKit');TUICallKit.logout((res) => {if (res.code === 0) {console.log('logout success');} else {console.log(`logout failed, error message = ${res.msg}`);}});
参数 | 类型 | 含义 |
callback | Function | 回调函数,code = 0 表示调用成功;code != 0 表示调用失败,失败原因见 msg |
setSelfInfo
设置用户昵称、头像。用户昵称不能超过500字节,用户头像必须是URL格式。
注意:
通话中使用该接口修改用户信息,UI 不会立即更新,需要等到下次通话才能看到变化。
const TUICallKit = uni.requireNativePlugin('TencentCloud-TUICallKit');const options = {nickName: 'jack',avatar: 'https:/****/user_avatar.png'}TUICallKit.setSelfInfo(options, (res) => {if (res.code === 0) {console.log('setSelfInfo success');} else {console.log(`setSelfInfo failed, error message = ${res.msg}`);}});
参数 | 类型 | 含义 |
options | Object | 初始化参数 |
options.nickName | String | 目标用户的昵称,非必填 |
options.avatar | String | 目标用户的头像,非必填 |
callback | Function | 回调函数,code = 0 表示调用成功;code != 0 表示调用失败,失败原因见 msg |
call
拨打电话(1v1通话)
const TUICallKit = uni.requireNativePlugin('TencentCloud-TUICallKit');const options = {userID: 'mike',callMediaType: 1, // 语音通话(callMediaType = 1)、视频通话(callMediaType = 2)callParams: {roomID: 0,strRoomID: '1223', // 使用字符串房间号}};TUICallKit.call(options, (res) => {if (res.code === 0) {console.log('call success');} else {console.log(`call failed, error message = ${res.msg}`);}});
参数如下表所示:
参数 | 类型 | 含义 |
options | Object | 初始化参数 |
options.userID | String | 目标用户的 userID |
options.callMediaType | Number | 通话的媒体类型,比如:语音通话(callMediaType = 1)、视频通话(callMediaType = 2) |
Object | 通话扩展参数,例如:房间号、通话邀请超时时间,离线推送自定义内容等。 | |
callback | Function | 回调函数,code = 0 表示调用成功;code != 0 表示调用失败,失败原因见 msg |
groupCall
发起群组通话,注意:使用群组通话前需要创建IM 群组,如果已经创建,请忽略。
const TUICallKit = uni.requireNativePlugin('TencentCloud-TUICallKit');const options = {groupID: 'myGroup',userIDList: ['mike', 'tom'],callMediaType: 1, // 语音通话(callMediaType = 1)、视频通话(callMediaType = 2)callParams: {roomID: 0,strRoomID: '1223', // 使用字符串房间号}};TUICallKit.groupCall(options, (res) => {if (res.code === 0) {console.log('call success');} else {console.log(`call failed, error message = ${res.msg}`);}});
参数 | 类型 | 含义 |
options | Object | 初始化参数 |
options.groupID | String | 此次群组通话的群 ID |
options.userIDList | List | 目标用户的 userId 列表 |
options.callMediaType | Number | 通话的媒体类型,比如:语音通话(callMediaType = 1)、视频通话(callMediaType = 2) |
Object | 通话扩展参数,例如:房间号、通话邀请超时时间,离线推送自定义内容等。 | |
callback | Function | 回调函数,code = 0 表示调用成功;code != 0 表示调用失败,失败原因见 msg |
joinInGroupCall
加入群组中已有的音视频通话。
const TUICallKit = uni.requireNativePlugin('TencentCloud-TUICallKit');const options = {roomID: 9898,groupID: 'myGroup',callMediaType: 1, // 语音通话(callMediaType = 1)、视频通话(callMediaType = 2)};TUICallKit.joinInGroupCall(options, (res) => {if (res.code === 0) {console.log('joinInGroupCall success');} else {console.log(`joinInGroupCall failed, error message = ${res.msg}`);}});
注意:
roomID 与 strRoomID 是互斥的,若您选用 strRoomID,则 roomID 需要填写为 0。若两者都填,SDK 将优先选用 roomID。
不要混用 roomID 和 strRoomID,因为它们之间是不互通的,比如数字 123 和字符串 123 是两个完全不同的房间。
参数 | 类型 | 含义 |
options | Object | 初始化参数 |
options.roomID | Number | 数字房间号 取值范围 1 - 2147483647(2^31-1) |
options.strRoomID | String | 字符串房间号
推荐取值 限制长度为 64 字节。以下为支持的字符集范围(共 89 个字符): 大小写英文字母(a-zA-Z) 数字(0-9) 空格、 ! 、# 、$ 、% 、& 、( 、) 、+ 、- 、: 、; 、< 、= 、. 、> 、? 、@ 、[ 、] 、^ 、_ 、{ 、} 、| 、~ 、, |
options.groupID | String | 此次群组通话的群 ID |
options.callMediaType | Number | 通话的媒体类型,比如:语音通话(callMediaType = 1)、视频通话(callMediaType = 2) |
callback | Function | 回调函数,code = 0 表示调用成功;code != 0 表示调用失败,失败原因见 msg |
setCallingBell
设置自定义来电铃音,这里仅限传入本地文件地址,需要确保该文件目录是应用可以访问的。
const TUICallKit = uni.requireNativePlugin('TencentCloud-TUICallKit');// 【1】通过 uni.saveFile 保存音频文件到本地,具体参考 saveFile 接口: https://zh.uniapp.dcloud.io/api/file/file.html#savefileconst tempFilePath = './static/rain.mp3'; // 本地存放的音频文件let musicFilePath = '';uni.saveFile({tempFilePath: tempFilePath,success: (res) => {console.warn('保存文件成功 = ', JSON.stringify(res)); // 获取的是相对路径musicFilePath = res.savedFilePath;// 【2】相对路径转绝对路径,否则访问不到musicFilePath = plus.io.convertLocalFileSystemURL(musicFilePath); // 转绝对路径// 【3】设置铃声TUICallKit.setCallingBell(musicFilePath, (res) => {if (res.code === 0) {console.log('setCallingBell success');} else {console.log(`setCallingBell failed, error message = ${res.msg}`);}});},fail: (err) => {console.error('保存文件失败');},});
参数 | 类型 | 含义 |
filePath | String | 来电铃音本地文件地址 |
callback | Function | 回调函数,code = 0 表示调用成功;code != 0 表示调用失败,失败原因见 msg |
enableMuteMode
开启/关闭静音模式。
开启后,收到通话请求,不会播放来电铃声。
const TUICallKit = uni.requireNativePlugin('TencentCloud-TUICallKit');const enable = true;TUICallKit.enableMuteMode(enable);
参数 | 类型 | 含义 |
enable | Boolean | 开启、关闭静音;true 表示开启静音 |
enableFloatWindow
开启/关闭悬浮窗功能,设置为 false 后,通话界面左上角的悬浮窗按钮会隐藏。
const TUICallKit = uni.requireNativePlugin('TencentCloud-TUICallKit');const enable = true;TUICallKit.enableFloatWindow(enable);
参数 | 类型 | 含义 |
enable | Boolean | 开启、关闭悬浮窗功能;true 表示开启浮窗 |
enableIncomingBanner
开启/关闭来电横幅显示。
默认为
false
,被叫端收到邀请后默认弹出全屏通话等待界面,开启后先展示一个横幅,然后根据需要拉起全屏通话界面。注意:
v2.3.1+ 支持。
const TUICallKit = uni.requireNativePlugin('TencentCloud-TUICallKit');const enable = true;TUICallKit.enableIncomingBanner(enable);
hideFeatureButton
隐藏 Call 原生按钮。v2.7.0+支持
const TUICallKit = uni.requireNativePlugin('TencentCloud-TUICallKit');TUICallKit.hideFeatureButton(btnName: String);
参数 | 类型 | 含义 |
btnName | String | 要隐藏按钮的名字。 'microphone' | 'speakerphone' | 'camera' | 'switchCamera' |
addCustomView
新增自定义按钮,icon 支持在线地址和本地地址。v2.7.0+支持
参数 | 类型 | 含义 |
options | Object | |
options.customView | Object | 自定义按钮对象。 |
options.customView.viewId | String | 自定义按钮的 id,唯一(必填)。 |
options.customView.text | String | 自定义按钮的文案。 |
options.customView.icon | String | 自定义按钮的图标,支持本地和在线地址(推荐使用本地图片)。 |
options.customView.weight | Number | 自定义按钮在功能区域的位置,按照数值排序,添加到对应的位置。 如果 weight 位置已经有按钮,则新增不会生效。 |
options.area | String | 新增自定义按钮区域,目前仅支持 'FunctionArea' |
在线 icon 地址
const TUICallKit = uni.requireNativePlugin('TencentCloud-TUICallKit');const options = { customView: { viewId:'signId', text: '确认收到', icon: 'https://xxx', weight: 25, }, area: 'FunctionArea', } TUICallKit.addCustomView(options);
本地 icon 地址
const TUICallKit = uni.requireNativePlugin('TencentCloud-TUICallKit');const tempFilePath = '../../static/logo.png'; // 本地存放的图片 let iconFilePath = ''; uni.saveFile({ tempFilePath: tempFilePath, success: (res) => { console.warn('保存文件成功 = ', JSON.stringify(res)); // 获取的是相对路径 iconFilePath = res.savedFilePath; // 【2】相对路径转绝对路径,否则访问不到 iconFilePath = plus.io.convertLocalFileSystemURL(iconFilePath); // 转绝对路径 // 【3】add const options = { customView: { viewId:'signId', text: '确认收到', icon: iconFilePath, weight: 25, }, area: 'FunctionArea', } TUICallKit.addCustomView(options); ); }, fail: (err) => { console.error('保存文件失败'); }, });
updateCustomView
更新新增按钮的内容,只更新传入的内容,则使用 addCustomView 时传入的参数。v2.7.0+支持
const TUICallKit = uni.requireNativePlugin('TencentCloud-TUICallKit');const options = { customView: { viewId:'signId', text: '确认收到', icon: 'xxx', }, } TUICallKit.updateCustomView(options);
参数 | 类型 | 含义 |
options | Object | |
options.customView | Object | |
options.customView.viewId | String | 自定义按钮的 id,唯一(必填)。 |
options.customView.text | String | 自定义按钮的文案。 |
options.customView.icon | String | 自定义按钮的图标,支持本地和在线地址 |
options.customView.weight | Number | 自定义按钮在功能区域的权重位置 |
options.area | String | 目前仅支持 'FunctionArea' |
removeCustomView
根据传入的 viewId,删除新增的自定义按钮。v2.7.0+支持
const TUICallKit = uni.requireNativePlugin('TencentCloud-TUICallKit');TUICallKit.removeCustomView({ customView: { viewId: 'signId', } })
参数 | 类型 | 含义 |
options | Object | |
options.customView | Object | |
options.customView.viewId | String | 自定义按钮的 id,唯一(必填)。 |
startFloatWindow
打开悬浮窗,需要开启相关授权。v2.7.0+支持
const TUICallKit = uni.requireNativePlugin('TencentCloud-TUICallKit');TUICallKit.startFloatWindow((res) => { if (res.code === 0) { // 开启悬浮窗成功 } else { // 开启悬浮窗失败 } })
参数 | 类型 | 含义 |
callback | Function | 回调函数,code = 0 表示调用成功;code != 0 表示调用失败,失败原因见 msg |
TUICallKit 类型定义
CallParams
通话参数
注意:
roomID 与 strRoomID 是互斥的,若您选用 strRoomID,则 roomID 需要填写为 0。若两者都填,SDK 将优先选用 roomID。
不要混用 roomID 和 strRoomID,因为它们之间是不互通的,比如数字 123 和字符串 123 是两个完全不同的房间。
参数 | 类型 | 描述 |
roomID | Number | 数字房间号 取值范围 1 - 2147483647(2^31-1) |
strRoomID | String | 字符串房间号
推荐取值 限制长度为 64 字节。以下为支持的字符集范围(共 89 个字符): 大小写英文字母(a-zA-Z) 数字(0-9) 空格、 ! 、# 、$ 、% 、& 、( 、) 、+ 、- 、: 、; 、< 、= 、. 、> 、? 、@ 、[ 、] 、^ 、_ 、{ 、} 、| 、~ 、, |
offlinePushInfo | 厂商离线推送配置信息 | |
timeout | Number | 通话超时时间,默认:30s,单位:秒 |
userData | String |
OfflinePushInfo
注意:
title、description 字段值不能传入空字符串,必须传入有效值。
v2.3.2+ 支持。
参数 | 类型 | 描述 |
title | String | 离线推送展示通知栏标题 |
description | String | 离线推送展示通知栏内容 |
iOSSound | String | 离线推送声音设置(仅对 iOS 生效)。 当 sound = IOS_OFFLINE_PUSH_NO_SOUND,表示接收时不会播放声音。 当 sound = IOS_OFFLINE_PUSH_DEFAULT_SOUND,表示接收时播放系统声音。 如果要自定义 iOSSound,需要先把语音文件链接进 Xcode 工程,然后把语音文件名(带后缀)设置给 iOSSound |
androidSound | String | 离线推送声音设置(仅对 Android 生效, IMSDK 6.1 及以上版本支持)。 只有华为和谷歌手机支持设置声音提示,小米手机设置声音提示,请您参照:小米自定义铃声。 另外,谷歌手机 FCM 推送在 Android 8.0 及以上系统设置声音提示,必须调用 setAndroidFCMChannelID 设置好 channelID,才能生效 |
androidOPPOChannelID | String | 离线推送设置 OPPO 手机 8.0 系统及以上的渠道 ID |
androidXiaoMiChannelID | String | 小米手机 8.0 系统及以上的渠道 ID |
androidFCMChannelID | String | FCM 通道手机 8.0 系统及以上的渠道 ID |
ignoreIOSBadge | boolean | 离线推送忽略 badge 计数(仅对 iOS 生效), 如果设置为 true,在 iOS 接收端,这条消息不会使 APP 的应用图标未读计数增加。 |
isDisablePush | boolean | 是否关闭推送(默认开启推送) |