更新记录

6.0.1(2023-09-11)

  1. 修复voiceCallModule的移除坚挺bug(内测);

6.0.0(2023-03-20)

  1. 升级IM SDK至7.0.3754;
  2. 升级TRTC SDK至10.9.0;
  3. 升级基础库;

5.3.2(2022-10-13)

  1. 修复iOS设置信令监听闪退bug内测);
查看更多

平台兼容性

Android Android CPU类型 iOS
适用版本区间:4.4 - 12.0 armeabi-v7a:未测试,arm64-v8a:未测试,x86:未测试 适用版本区间:9 - 16

原生插件通用使用流程:

  1. 购买插件,选择该插件绑定的项目。
  2. 在HBuilderX里找到项目,在manifest的app原生插件配置中勾选模块,如需要填写参数则参考插件作者的文档添加。
  3. 根据插件作者的提供的文档开发代码,在代码中引用插件,调用插件功能。
  4. 打包自定义基座,选择插件,得到自定义基座,然后运行时选择自定义基座,进行log输出测试。
  5. 开发完毕后正式云打包

付费原生插件目前不支持离线打包。
Android 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/android
iOS 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/ios

注意事项:使用HBuilderX2.7.14以下版本,如果同一插件且同一appid下购买并绑定了多个包名,提交云打包界面提示包名绑定不一致时,需要在HBuilderX项目中manifest.json->“App原生插件配置”->”云端插件“列表中删除该插件重新选择


腾讯云语音通话

腾讯云实时语音,提供类似微信的语音通话功能,适用语音聊天、语音连麦、语音台、在线K歌、语音会议等场景。

接口模式(纯API)

扫描下方二维码,安装示例代码,快速体验插件功能:

Android iOS 联系我们
Android示例代码 iOS示例代码 技术支持

扫码添加技术支持(微信号: ruanyunkeji006),开通测试账号。

UI模式

扫描下方二维码,安装示例代码,快速体验插件功能:

Android iOS 联系我们
Android示例代码 iOS示例代码 技术支持

扫码添加技术支持(微信号: ruanyunkeji006),开通测试账号。

定制UI

扫码添加我们技术支持(微信号: ruanyunkeji006),联系定制UI

技术支持

建议扫码添加我们技术支持,协助接入和测试。

联系我们 微信号 更多功能
联系我们
ruanyunkeji006

离线推送
群组管理
全局监听
用户信息托管(头像、昵称)

API 接口文档

使用教程

快速开始

步骤1: 插件的加载和配置

  • 加载插件

首先,uniapp平台的原生插件,需要自定义基座后才能使用,您可以按照自定义基座文档进行。

其次,新建nvue文件,注意该插件必须在nvue中使用。

插件名称: RY-TencentTrtcVoiceCall,

该插件为Component类型,需要在nvue中使用,通过如下方式来引用插件:

<RY-TencentTrtcVoiceCall class="trtc" ref="voiceCall" v-bind:style = "{ width: playerWidth, height: playerHeight }"></RY-TencentTrtcVoiceCall>

备注:

可以通过改变width和height参数的大小,来改变视图容器的大小。

  • 腾讯云配置

注册或登录腾讯云账号,实名认证后,开通实时音视频

  1. 点击应用管理,进入应用列表;
  2. 点击 "创建应用",填入相关信息,创建新应用; 如果使用已有应用,则跳过这步;
  3. 点击"应用信息",进入应用详情;
  4. 在"应用信息"标签卡中,点击"SDKAppID"后面的复制按钮,复制SDKAppId,并保存,对应为后文中的"sdkAppId"。
  • 生成签名

手动签名点击 UserSig生成&校验 选择对应的sdkAppId的应用,输入userId,获取对应的用户签名userSig;

如果您需要【自动签名】,联系我们获取。

步骤2: 初始化

初始化语音通话组件,只有 init 初始化组件后,才可以进行语音通话的相关接口调用。

this.$refs.voiceCall.init({}, ret => {
    console.log(ret);
});

步骤3: 设置监听

语音通话的事件监听函数 setVoiceCallListener,用于返回各类事件,根据返回的事件,对通话做出相应的处理。事件回调详情可以参考事件回调

this.$refs.voiceCall.setVoiceCallListener({}, ret => {
    console.log(ret);
});

步骤4: 登录

调用 login 完成组件的登录,其中有几个关键参数的填写请参考下表:

参数名 作用
sdkAppId 实时音视频控制台的应用Id
userId 当前用户的Id
userSig 用户签名
this.$refs.voiceCall.login({
    sdkAppId: 140xxx416,
    userId: 'test001',
    userSig: 'fdsafdxxxxfdsajfllk'
}, ret => {
    console.log(ret);
});

步骤5: 实现1V1通话

  1. 发起方调用 call 方法,userId 参数为用户 Id,就能够发起语音通话的请求。
  2. 接收方监听器会收到 setVoiceCallListener#onInvited 回调事件,此时可以通过 accept 方法接听此次通话,也可以选择用 reject 方法拒绝通话。
  3. 发起方监听器接收到 setVoiceCallListener#onUserEnter 的回调事件,说明接收方已经进入通话。
// 1.监听回调
this.$refs.voiceCall.setVoiceCallListener({}, ret => {
    if (ret.hasOwnProperty('eventType')) {
        // 接听/拒绝
        // 此时 B 如果也登录了IM系统,会收到 onInvited 回调
        // 可以调用 RY-TencentTrtcVoiceCall 的accept方法接受 
        // 或 RY-TencentTrtcVoiceCall 的reject方法拒绝
        if ('onInvited' == ret.eventType) {
            this.$refs.voiceCall.accept({}, ret => {
                console.log(ret);
            });
        }
    }
});

// 2.调用组件的其他功能函数发起通话或挂断等
// 注意:必须在登录后才可以正常调用
// 发起视频通话
this.$refs.voiceCall.call({
    userId: '目标用户'
}, ret => {
    console.log(ret);
});
// 挂断
this.$refs.voiceCall.hangUp({}, ret => {
    console.log(ret);
});
// 拒绝
this.$refs.voiceCall.reject({}, ret => {
    console.log(ret);
})

步骤6: 实现多人通话

  1. 发起方:多人语音通话需要调用 groupCall 函数,并传入用户列表(userIdList)、群组 IM Id(groupId),其中 userIdList 为必填参数,groupId 为选填参数,就能发起多人语音通话。
  2. 接收端:通过监听器 setVoiceCallListener#onInvited 回调事件,能够接收到此次请求。
  3. 接收端:收到回调后可以调用 accept 方法接听此次通话,也可以选择用 reject 方法拒绝通话。
  4. 如果超过一定时间(默认30s)没有回复,接收方会收到setVoiceCallListener#onCallingTimeOut 的回调事件,发起方会收到 setVoiceCallListener#onNoResp 回调事件。通话发起方在多个接收均未应答时 hangup , 每个接收方均会收到 setVoiceCallListener#onCallingCancel 事件回调。
  5. 如果需要离开当前多人通话可以调用 hangup 方法。
  6. 如果通话中有用户中途加入或离开,那么其他用户均会接收到 setVoiceCallListener#onUserEnter 或 setVoiceCallListener#onUserLeave 回调事件。
// 前面省略...
// 拼凑需要拨打的用户列表
var userIdList = [
    'b',
    'c',
    'd'
]
// 如果您不是在一个 IM 群里发起的, groupId 可以传一个空串;
this.$refs.voiceCall.groupCall({
    userIdList: userIdList,
    groupId: ''
}, ret => {
    console.log(ret);
});

说明:

您可以通过 一系列的监听回调,例如 onReject、onCancel 等事件来做对应的 UI 提示。

更多功能

  • 全局监听
  • 用户信息托管,包含头像、昵称等托管
  • 离线推送
  • 群组管理

扫码添加, 获取技术支持:

技术支持



微信号: ruanyunkeji006

隐私、权限声明

1. 本插件需要申请的系统权限列表:

Android: "android.permission.INTERNET", "android.permission.ACCESS_NETWORK_STATE", "android.permission.ACCESS_WIFI_STATE", "aandroid.permission.WRITE_EXTERNAL_STORAGE", "android.permission.READ_EXTERNAL_STORAGE", "android.permission.RECORD_AUDIO", "android.permission.MODIFY_AUDIO_SETTINGS", "android.permission.BLUETOOTH", "android.permission.CAMERA", "android.permission.READ_PHONE_STATE", "android.hardware.camera", "android.hardware.camera.autofocus" iOS: 无

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

插件使用的实时音视频SDK会采集数据,详情可参考:https://cloud.tencent.com/document/product/647/42046

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

使用中有什么不明白的地方,就向插件作者提问吧~ 我要提问