更新记录
1.6(2020-08-27) 下载此版本
1.增加视频一对一通话功能
1.5(2020-08-21) 下载此版本
添加libresolv.9.tbd 配制
1.4(2020-08-21) 下载此版本
更新打包失败问题,离线打包正常。
查看更多平台兼容性
Android | iOS |
---|---|
× | 适用版本区间:9 - 14 |
原生插件通用使用流程:
- 购买插件,选择该插件绑定的项目。
- 在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原生插件配置”->”云端插件“列表中删除该插件重新选择
腾讯云实时音视频插件
- 到腾讯云管理后台创建APPID并生成useSig->https://console.cloud.tencent.com
- 进入实时音频管理->https://console.cloud.tencent.com/trtc
- 创建appID ->复制useSig [https://console.cloud.tencent.com/trtc/app/detail/quickstart/1400384396]
-
useSig生成规则参照:https://cloud.tencent.com/document/product/647/17275
注意腾讯云实时语音Sdk并不是免费的
注意腾讯云实时语音Sdk并不是免费的
注意腾讯云实时语音Sdk并不是免费的
重要的事情说三遍具体收费情况自行查看:https://cloud.tencent.com/product/trtc
注意事项
- 目前仅支持视频会议与视频一对一通话,使用方式与android大体相同(其它功能不提供,开发量太大了。)
- 打包时(不管是调试包还是正试包)需要在模块配制中钩选 '视频播放器'(因为IOS的SDK包中libVideo.a有对Masony的集成 而我的插件对Masony有依赖,所以需要此选项打勾,不然Masony依赖会找不到,打包是可以正常,但运行时会崩溃)
实例化组件
const txCall=uni.requireNativePlugin('HG-TxCall-IOS');
const modal = uni.requireNativePlugin('modal');
初始化
调用config(json)初始化
txCall.config( { "userId":this.$data.config.userid,//我的用户ID "userSig":"eJyrVgrxCdYrSy1SslIy0jNQ0gHzM1NS80oy0zLBwoZQweKU7MSCgswUJStDEwMDYwtjM0sTiExqRUFmUSpQ3NTU1MjAwAAiWpKZCxazNDK0MDM0gaotzkwHmhngVJpU5FIcHFXmXWGiXewd6VFa7OTpZx4ZkZ3v7JmV6xwQGFHo7Wti4Rtpq1QLABfrL6w_",//UserSig的密钥 "nickName":"petter",//用户昵称 "useDefaultRandomAvatar":true,//是否使用随机头像 "userAvatar":"", //头像地址 "appid":1400383633, //腾讯云申请的appID "baseUrl":"http://zf.hualin688.com/api/api/", "api":"userMsgById" } ,(ret) => { modal.toast({ message: ret.code, duration: 1.5 }); } );
参数说明
参数名 | 说明 | 必要 | 类型 | 默认值 |
---|---|---|---|---|
userId | 当前用ID | 是 | String | 无 |
userSig | 用户sig,根据用户名计算生成的加密串字符串 | 是 | String | 无 |
nickName | 显示的名称 | 是 | String | 无 |
useDefaultRandomAvatar | 是否使用随机头像 | 是 | bool | false |
userAvatar | 用户头像地址 | 否 | String | 无 |
appid | 在腾讯云创建应用的appID | 是 | int | 无 |
baseUrl | 接收邀请时获取拨号方信息的地址 | 否 | String | 无 |
api | 获取拨号方信息的api | 否 | String | 无 |
特别说明
在接收到邀请时,如果有配制baseUrl 与 api 则会使用这两个参数结合拨号方用户id生成一个get请求 get请求拼接方式如下: 如:baseUrl = http://zf.hualin688.com/api/api/ api = userMsgById 则最后请求 连接为: http://zf.hualin688.com/api/api/userMsgById?id={拨号方id} 返回数据格式必须如下:
{ "errorCode":0, "errorMessage":"\u6210\u529f", "data":{ "avatar":"http:\/\/zf.hualin688.com\/uploads\/avatar\/20200721\/ca6bdd1e22b2e454d1d48b2945b202b4.jpg", "nickName":"\u54c8\u54c8" } }
如果数据解析异常,或格式不对,将会使用默认头像 用户昵称会显示拨号方的id号
一对一语音,视频 (电话模式)
startCall(config);
txCall.startCall({
"callType":"audio",//audio表示语音,video表示视屏通话 (仅支持video)
"mode":"call",//call表示通话
"roomId":1101,//会议ID 房间号不存在,则自动创建
"targetInfo":{//目标信息
"userId":this.$data.config.targetId,//被呼叫方的ID
"nickName":"张三",//用户昵称
"userAvatar":"", //头像地址
}
}
);
参数说明
参数名 | 说明 | 必要 | 类型 | 默认值 |
---|---|---|---|---|
callType | 类型(video) | 是 | String | audio |
mode | 模式(call) | 是 | String | call |
roomId | 会议ID | 否 | int | 无,在meeing模式下,必填 |
targetInfo | 目标用户信息 | 否 | object | 无,在call模式下,必填 |
targetInfo
参数名 | 说明 | 必要 | 类型 | 默认值 |
---|---|---|---|---|
userId | 目标用户ID | 是 | String | 无 |
nickName | 目标用户昵称 | 是 | String | 无 |
userAvatar | 目标头像地址 | 否 | String | 无,在useDefaultRandomAvatar为true时,随机 |
多对多语音,视频 (会议模式)
startMeeting(config); 多对多视频
txCall.startMeeting({ "type":"video",//video表示视屏通话 "roomId":1101,//会议ID 房间号不存在,则自动创建 "roomName":'房间名称', "role":'anchor',//anchor表示主持人 ,audience 表示参与者 userList:[{ id:"1", name:'petter', avatar:'', }, { id:"2", name:'petter2', avatar:'', }, { id:"3", name:'petter3', avatar:'', } ] },(ret) => { modal.toast({ message: ret.code + ","+ret.message, duration: 1.5 }); } );
参数说明
参数名 | 说明 | 必要 | 类型 | 默认值 |
---|---|---|---|---|
type | 会议模式 | 是 | String | audio |
roomId | 会议ID | 是 | String | 无 |
defaultOpenAudio | 默认是否上传语音 | 是 | bool | 无 |
defaultOpenVideo | 默认是否上传视频 | 是 | bool | 无 |
role | 加入会议角色 | 否 | String | anchor表示主持人 ,audience 表示参与者 |
userList | 会议参与人员列表 | 是 | Array | 无 |
添加弹幕(只对视频会议)
txCall.sendDanmaku({
avatar:'',
nickName:'petter',
content:'测试'+(Math.round(Math.random()*100))
});
关闭挂断(退出会议,退出直播)
closeCall();
参数说明
此函数没有参数
异步回调说明json格式
{"code":-93,"message":""}
code值说明
代码 | 说明 |
---|---|
-93 | 会话结束 |
-94 | 会话超时 |
-95 | 对方忙 |
-96 | 无应答 |
-97 | 对方会话取消 |
-98 | 被拒绝 |
-99 | 未提供会议ID |
-100 | 未登录 |
-105 | 退出会议 |
-103 | 被邀请电话(视频) |
-102 | 有用户离开 |
-101 | 有用户进入 |
-85 | 登出 |
-90 | 登录房间 |
-88 | 房间配制成功 |
-92 | IM登录成功 |
other | 其它代码,可参考返回的message说明 |