更新记录

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

特别说明

在接收到邀请时,如果有配制baseUrlapi 则会使用这两个参数结合拨号方用户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

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