更新记录
1.0.9(2021-07-08)
新增多人语音会议,对服务器验证数据进行加密
1.0.8(2021-07-06)
新增双人音频通话
1.0.7(2021-06-29)
新增直播白板,直播内会议消息、私密消息
查看更多平台兼容性
Android | Android CPU类型 | iOS |
---|---|---|
适用版本区间:6.0 - 11.0 | armeabi-v7a:支持,arm64-v8a:支持,x86:未测试 | × |
原生插件通用使用流程:
- 购买插件,选择该插件绑定的项目。
- 在HBuilderX里找到项目,在manifest的app原生插件配置中勾选模块,如需要填写参数则参考插件作者的文档添加。
- 根据插件作者的提供的文档开发代码,在代码中引用插件,调用插件功能。
- 打包自定义基座,选择插件,得到自定义基座,然后运行时选择自定义基座,进行log输出测试。
- 开发完毕后正式云打包
付费原生插件目前不支持离线打包。
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原生插件配置”->”云端插件“列表中删除该插件重新选择
私有化部署以及技术支持,请使用如下方式联系:
复制代码QQ群:785919513
QQ号:371162760
微信:bin371162760
手机号:1708140884
公共服务Key,仅适用于测试环境,不建议生产环境使用,公共环境建议userId使用UUID,Key会不定期更新,如失效,请联系作者
复制代码d21L12dCQM3zKHD1AJFctENBpS8XgwXETpTulPdRHRtN8t+/bCIGjTYy7FMf0lYtrRPcO/UQRAZa/LR7y2y2APJPq1iE3s6R+Fka4A98Ca4=
==如购买私有服务器之后会将购买共有服务器的费用全额退还==
公共模块
引用插件
复制代码let vrtcCloud = uni.requireNativePlugin('VIP-VRTCCloud')
调用函数
函数名 | 参数 | 说明 |
---|---|---|
initSDK | 1、key 联系作者申请 2、userId 用户ID |
初始化SDK |
startListener | 1、callback 回调 | 事件监听 |
sendMeetingInvite | 1、targetId 目标ID 2、callback 回调 |
发送会议邀请 |
sendOnLineMessage | 1、targetId 目标ID 2、message 消息内容 3、callback 回调 |
发送在线消息 |
call | 1、targetId 目标ID 2、callback 回调 |
拨打视频电话(一对一) |
createMeeting | 1、meetingName 会议名称 2、callback 回调 |
创建会议 |
joinMeeting | 1、meetingId 会议ID 2、callback 回调 |
加入会议 |
监听事件
事件名 | 说明 |
---|---|
voip_rev_calling | 用户来电 |
c2c_rev_msg | 用户普通消息 |
c2c_rev_function_msg | 用户功能消息,例如:会议邀请、直播邀请等 |
user_online | 用户上线 |
user_offline | 用户掉线 |
代码示例
复制代码//初始化
vrtcCloud.initSDK({
key:'d21L12dCQM3zKHD1AJFctENBpS8XgwXETpTulPdRHRtN8t+/bCIGjTYy7FMf0lYtrRPcO/UQRAZa/LR7y2y2APJPq1iE3s6R+Fka4A98Ca4=',
userId:'123456'
},res=>{
if(res.code==='success'){
uni.showToast({
title:'初始化成功'
})
this.title = '123456'
//只监听一次即可,如果想再次监听,需要先停止监听
this.listener()
}
if(res.code==='failed'){
this.title = res.message
}
})
//监听
listener(){
vrtcCloud.startListener(res=>{
//谁谁谁来电
if(res.type==='voip_rev_calling'){
uni.showToast({
title:res.targetId+'来电了'
})
uni.navigateTo({
url:'../calling/calling?targetId='+res.targetId
})
}
//普通消息
if(res.type==='c2c_rev_msg'){
console.log(res.content)
}
//功能消息
if(res.type==='c2c_rev_function_msg'){
//会议邀请
if(res.function==='meetingInvite'){
let meetingId = res.data.meetingId
uni.showModal({
title:'会议邀请',
content:'是否进入会议',
success:res=>{
vrtc.joinMeeting({
meetingId:meetingId
},res=>{
if(res==='success'){
uni.navigateTo({
url:'../meeting/meeting'
})
}
})
}
})
}
if(res.function==='liveInvite'){
let creatorId = res.data.creatorId
let liveId = res.data.liveId
uni.showModal({
title:'直播邀请',
content:'是否进入直播',
success:res=>{
vrtc.watchLive({
creatorId:creatorId,
liveId:liveId
},res=>{
if(res.code==='success'){
uni.navigateTo({
url:'../liveing/liveing'
})
}
})
}
})
}
}
if(res.type==='user_online'){
this.title = '123456'+'上线了'
}
if(res.type==='user_offline'){
this.title = '掉线了'
}
})
}
//拨打电话
vrtcCloud.call('对方ID',res=>{
if(res.code==='success'){
uni.navigateTo({
url:'../call/call'
})
}
})
//创建会议
vrtcCloud.createMeeting({
meetingName:'会议名字'
},res=>{
if(res.code==='success'){
uni.navigateTo({
url:'../meeting/meeting'
})
}
})
IM消息模块
引用插件
复制代码let imCloud = uni.requireNativePlugin('VIP-VRTCIMCloud')
调用函数
函数名 | 参数 | 说明 |
---|---|---|
sendOnLineMessage | 1、targetId 目标ID 2、message 消息内容 3、callback 回调 |
发送在线消息 |
代码示例
复制代码//发送在线消息
imCloud.sendOnLineMessage('123456','你好',res=>{
if(res.code==='success'){
uni.showToast({
title:'发送成功'
})
}
if(res.code==='failed'){
uni.showToast({
title:'发送失败'
})
}
})
双人音频聊天模块
复制代码//这个是在通话页面引用的
let voipAudioCloud = uni.requireNativePlugin('VIP-VRTCVoipAudioCloud')
调用函数
函数名 | 参数 | 说明 |
---|---|---|
init | 1、callback 回调 | 初始化 |
startListener | 1、callback 回调 | 监听事件 |
accept | 1、targetId 目标ID 2、callback 回调 |
接听,对方调用 |
refuse | 1、callback 回调 | 挂断,对方调用 |
监听事件
事件名 | 说明 |
---|---|
miss | 通话中有新来电 |
busy | 对方正忙 |
refuse | 对方已拒绝 |
hangup | 对方已挂断 |
connect | 对方接受 |
error | 对方出错(挂断/强制挂断) |
代码示例
复制代码voipAudioCloud.init(res=>{
uni.showToast({
title:res.code
})
})
//事件监听
voipAudioCloud.startListener(res=>{
//对方已挂断
if(res.type==='hangup'){
uni.navigateBack({
delta:1
})
}
})
//取消拨打
voipAudioCloud.cancel(res=>{
if(res.code==='success'){
uni.navigateBack({
delta:1
})
}
})
//挂断
voipAudioCloud.hangup(this.targetId,res=>{
if(res.code==='success'){
uni.navigateBack({
delta:1
})
}
})
双人视频聊天模块
引用插件
复制代码//这个是在对方发起通话之后,在单独的一个页面进行引用的
let voipCloud = uni.requireNativePlugin('VIP-VRTCVoipCloud')
调用函数
函数名 | 参数 | 说明 |
---|---|---|
startListener | 1、callback 回调 | 监听事件 |
accept | 1、targetId 目标ID 2、callback 回调 |
接听,对方调用 |
refuse | 1、callback 回调 | 挂断,对方调用 |
监听事件
事件名 | 说明 |
---|---|
hangup | 对方已取消通话 |
代码示例
复制代码//事件监听
voipCloud.startListener(res=>{
//对方已取消通话
if(res.type==='hangup'){
uni.navigateBack({
delta:1
})
}
})
//拒接
voipCloud.refuse(res=>{
if(res.code==='success'){
uni.navigateBack({
delta:1
})
}
})
//接听
voipCloud.accept(this.targetId,res=>{
if(res.code==='success'){
uni.redirectTo({
url:'../call/call'
})
}
})
渲染视频组件
复制代码//渲染本地端
<VIP-VRTCVoipLocalPlayView
ref="localVideo"
@onHangup="hangup"
@onRefuse="refuse"
@onBusy="busy"
@onError="error"
@onNoPermission="noPermission">
</VIP-VRTCVoipLocalPlayView>
//渲染远程端
<VIP-VRTCVoipRemotePlayView></VIP-VRTCVoipRemotePlayView>
视频组件调用函数
函数名 | 参数 | 说明 |
---|---|---|
hangup | 1、callback 回调 | 挂断,双方调用 |
cancel | 1、callback 回调 | 取消通话,我方调用 |
switchCamera | 无 | 切换摄像头 |
setVideoEnable | 1、enable | 启用/禁用摄像头 |
setAudioEnable | 1、enable | 启用/禁用音频 |
视频组件监听事件
事件名 | 说明 |
---|---|
onHangup | 对方挂断 |
onRefuse | 对方拒接 |
onBusy | 对方正忙 |
onError | 通话发生错误 |
onNoPermission | 没有给App授权(摄像头、音频) |
onCall | 拨打成功 |
onAccept | 接听成功 |
onMiss | 错误过来电 |
onConnect | 对方已接听 |
代码示例
复制代码//取消通话,如果是接通之前调用这个挂断
this.$refs.localVideo.cancel(res=>{
if(res.code==='success'){
uni.navigateBack({
delta:1
})
}
})
//挂断,通话正在进行中调用这个来结束通话
this.$refs.localVideo.hangup(res=>{
if(res.code==='success'){
uni.navigateBack({
delta:1
})
}
})
多人通话模块(适用于视频会议)
复制代码//渲染本地端
<VIP-VRTCMeetingLocalPlayView
ref="localVideo"
@onAddPlayer="addPlayer"
@onRemovePlayer="removePlayer"
@onCreateSuccess="createSuccess"
@onJoinSuccess="joinSuccess"
@onNoPermission="noPermission"
@onSelfKicked="selfKicked">
</VIP-VRTCMeetingLocalPlayView>
//渲染远程端
<VIP-VRTCMeetingRemotePlayView
ref="remoteVideo"
v-for="(userId, index) in players" :key="index"
:remoteUserId="userId">
</VIP-VRTCMeetingRemotePlayView>
视频组件调用函数
函数名 | 参数 | 说明 |
---|---|---|
leaveMeeting | 1、callback 回调 | 离开会议 |
kickMember | 1、targetId 目标ID 2、callback 回调 |
踢人 |
switchCamera | 无 | 切换摄像头 |
setVideoEnable | 1、enable | 启用/禁用摄像头 |
setAudioEnable | 1、enable | 启用/禁用音频 |
视频组件监听事件
函数名 | 参数 | 说明 |
---|---|---|
onAddPlayer | 对方ID | 新人加入 |
onRemovePlayer | 对方ID | 有人离开 |
onCreateSuccess | 会议ID | 创建会议成功 |
onJoinSuccess | 会议ID | 加入会议成功 |
onSelfKicked | 无 | 被踢了 |
onMessage | 消息内容 | 公共消息 |
onPrivateMessage | 消息内容 | 私密消息 |
onNoPermission | 没有给App授权(摄像头、音频) |
远端渲染需要接收的参数
函数名 | 参数 | 说明 |
---|---|---|
remoteUserId | 对方ID | 用于渲染对方的视频组件 |
代码示例
复制代码//离开会议
this.$refs.localVideo.leaveMeeting(res=>{
if(res.code==='success'){
uni.navigateBack({
delta:1
})
}
})
//踢人
this.$refs.localVideo.kickMember('123456',res=>{
if(res.code==='success'){
uni.navigateBack({
delta:1
})
}
})
//发送公共消息
this.$refs.localVideo.sendMessage(this.message,res=>{
if(res.code==='success'){
uni.showToast({
title:'发送成功'
})
}
})
//发送私密消息
this.$refs.localVideo.sendPrivateMessage({
targetId:'123456',
message:'消息内容'
},res=>{
if(res.code==='success'){
uni.showToast({
title:'发送成功'
})
}
})
直播模块
渲染视频组件
复制代码<VIP-VRTCVideoLivePlayView
ref="localVideo"
@onCreateSuccess="createSuccess"
@onStartSuccess="startSuccess"
@onAddPlayer="addPlayer"
@onRemovePlayer="removePlayer"
@onApplyLink="applyLink"
@onApplyLinkResult="applyLinkResult"
@onWatchSuccess="watchSuccess"
@onUploader="uploader"
@onClosed="closed">
</VIP-VRTCVideoLivePlayView>
视频组件监听函数
函数名 | 参数 | 说明 |
---|---|---|
onLeaveLive | 1、callback 回调 | 离开直播 |
onApplyToBroadcaster | targetId 对方ID | 观众申请连麦 |
onAgreeApplyToBroadcaster | targetId 对方ID | 主播同意观众连麦 |
onRefuseApplyToBroadcaster | targetId 对方ID | 主播拒绝对方连麦 |
onInviteToBroadcaster | targetId 对方ID | 主播邀请观众连麦 |
onAgreeInviteToBroadcaster | targetId 对方ID | 观众同意主播连麦 |
onRefuseInviteToBroadcaster | targetId 对方ID | 观众拒绝主播连麦 |
onCommandToAudience | targetId 对方ID | 主播命令连麦者下麦 |
onChangeToBroadcaster | 无 | 观众切换为连麦者 |
白板模块
==注意:目前仅适用在直播中==
渲染白板组件
复制代码<VIP-VRTCWhitePanel2PlayView
ref="localWhite">
</VIP-VRTCWhitePanel2PlayView>
白板组件调用函数
函数名 | 参数 | 说明 |
---|---|---|
publish | 无 | 启用白板绘制 |
pause | 无 | 暂停白板绘制 |
revoke | 无 | 撤销一步 |
clean | 无 | 清空白板 |