更新记录

2.1(2020-08-11) 下载此版本

  1. 更新语音聊天,接收方显示成视频的问题
  2. 移除对flame弹幕库的依赖 (修改改为滚屏显示)
  3. 添加直播(观众方)自定义商品显示接口

2.0(2020-08-05) 下载此版本

  1. 分开一对一,多对多api接口
  2. 添加直播(非cdn分发方式)
  3. 添加会议全体静音,静画功能

1.1(2020-07-24) 下载此版本

  1. 添加接收方头像与昵称配制
查看更多

平台兼容性

Android Android CPU类型 iOS
适用版本区间:4.4 - 11.0 armeabi-v7a:支持,arm64-v8a:支持,x86:未测试 ×

原生插件通用使用流程:

  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原生插件配置”->”云端插件“列表中删除该插件重新选择


腾讯云实时音视频插件

先看看效果

alt="下载地址"

  1. 到腾讯云管理后台创建APPID并生成useSig->https://console.cloud.tencent.com
  2. 进入实时音频管理->https://console.cloud.tencent.com/trtc
  3. 创建appID ->复制useSig [https://console.cloud.tencent.com/trtc/app/detail/quickstart/1400384396]
  4. useSig生成规则参照:https://cloud.tencent.com/document/product/647/17275

    注意腾讯云实时语音Sdk并不是免费的
    注意腾讯云实时语音Sdk并不是免费的
    注意腾讯云实时语音Sdk并不是免费的
    重要的事情说三遍

    具体收费情况自行查看:https://cloud.tencent.com/product/trtc

实例化组件

const txCall=uni.requireNativePlugin('HG-TxCall'); 
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表示视屏通话
        "mode":"call",//call表示通话  meeting表示会议
        "roomId":1101,//会议ID 房间号不存在,则自动创建
        "targetInfo":{//目标信息
        "userId":this.$data.config.targetId,//被呼叫方的ID
        "nickName":"张三",//用户昵称
        "userAvatar":"", //头像地址 
        }
    }
        );

参数说明

参数名 说明 必要 类型 默认值
callType 类型(audio,video) 是 String audio
mode 模式(call,meeting) 是 String call
roomId 会议ID 否 int 无,在meeing模式下,必填
targetInfo 目标用户信息 否 object 无,在call模式下,必填

targetInfo

参数名 说明 必要 类型 默认值
userId 目标用户ID 是 String 无
nickName 目标用户昵称 是 String 无
userAvatar 目标头像地址 否 String 无,在useDefaultRandomAvatar为true时,随机

多对多语音,视频 (会议模式)

startMeeting(config); 多对多语音

txCall.startMeeting({
"type":"audio",//audio表示语音,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
});
}
);

多对多视频

txCall.startMeeting({
"type":"video",//audio表示语音,video表示视屏通话
"roomId":1101,//会议ID 房间号不存在,则自动创建
"roomName":'房间名称',
"defaultOpenAudio":false,
"defaultOpenVideo":true,
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))
    });

开始直播(主播)

txCall.startLiveRoom({
        title:'我的直播',
        roomID:'1101',
    });

进入直播(观众)

txCall.enterLiveRoom({
        roomName:'我的直播',//房间名称
        roomId:'1101',//主播房间号
        anchorId:''+this.$data.config.targetId,//主播id
        anchorName:'petter',//主播名称
        coverUrl:'',//封面
        pusher_avatar:'',//主播头像
    });

添加自定义商品信息


var globalEvent = uni.requireNativePlugin('globalEvent');
    globalEvent.addEventListener('customGoodEvent', function(ret) {
        modal.toast({
            message: "我来自直播=>"+JSON.stringify(ret),
            duration: 2
        });
    });

txCall.setLiveCustomGoodInfo({
        id:'1',//点按钮后,返回的信息
        extra:'我是附加信息',//点按钮后,返回的信息
        title:'我是标题',//显示标题 (最多两行)
        buttonTitle:'点我',//按键内容
        imgUrl:'https://ss0.bdstatic.com/94oJfD_bAAcT8t7mm9GUKT-xh_/timg?image&quality=100&size=b4000_4000&sec=1597108492&di=661604ec5280e18041da9f0f4621b4ef&src=http://pic.feizl.com/upload/allimg/170614/0913162K0-3.jpg',
        content:'美女,美女,美女',//显示内容(单行)
        show:true,//控制是否显示自定商品信息
    });

全体静音(解除静音)视频会议有效

txCall.muteMic(true);

全体静画(解除静画) 视频会议有效

txCall.muteVideo(true);

登出腾讯云

logOut()

关闭挂断(退出会议,退出直播)

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说明

隐私、权限声明

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

1. 读写sdcard 2. 录音 3. 摄像头

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

插件本身不采集任何数据,插件使用的腾讯云SDK 请参考其官方说明:https://cloud.tencent.com/product/trtc

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

无

许可协议

作者未提供license.md