更新记录

4.0(2020-04-02)

1.增加android版本直播功能 2.增加旁路直播.

3.0(2020-02-19)

1.增加android版本,android版本只有音视频通话,暂无直播. 2.增加对方挂断回调. 3.增加通话视图销毁回调.

查看更多

平台兼容性

Android iOS

原生插件通用使用流程:

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


腾讯云视频通话插件

本插件还在开发中,目前仅支持iOS,并且只支持arm64 cpu架构,需要真机测试

在iOS配置里面需要添加:

"validArchitectures" : [ "arm64" ]

1. 首先要到腾讯云,申请视频通话sdkAppId , 腾讯云视频通讯收费情况请注册时查看相关收费标准。

https://cloud.tencent.com/product/trtc

2. 每个有用户名都可以通过加密计算返回用户 usersig ,计算的方法

https://cloud.tencent.com/document/product/647/17275

3. 实例化插件

const lzTXLite = uni.requireNativePlugin('LZ-TXLite');

有的方法需要传入用户信息,用户信息的类型属性如下:

UserInfo

属性 类型 说明
userId string 用户Id
userName string 用户名
imgUrl string 用户头像

API

4. 音频或视频通话,目前只支持一对一通话

拨打电话

callWithParams();

参数

属性名 类型 说明
appid int 申请的appid
userSig string 签名
isAudio bool 是否是音频
roomId int 房间号码
userInfo UserInfo 拨打电话者的信息
answer UserInfo 接听电话者的信息

回调函数

属性名 回调参数 说明
result {bool: isSuceess} isSucess:是否进入成功
quit {string: msg} 挂断的时候调用
error {int: errCode, string: errMsg} 出错的时候调用,errCode:错误代码, errMsg: 错误描述
newUserEnter {string: uid} 对方接听以后调用,uid:接听者的uid

挂断, 只有在拨打函数调用以后才有效

callQuit();

代码示例,

// 接听也是调用一样的代码,只不过userInfo和answer两个对象交换
lzTXLite.callWithParams(
                    {
                    appid: "你的appid",
                    userSig: "你的用户签名",
                    roomId: 1,
                    userInfo: {
                        userName: "",
                        userId: "1",
                        imgUrl: "https://ss3.bdstatic.com/70cFv8Sh_Q1YnxGkpoWK1HF6hhy/it/u=3431500611,3630261604&fm=26&gp=0.jpg"
                    },
                    answer: {
                        userName: "接听者",
                        userId: "12",
                        imgUrl: "https://ss2.bdstatic.com/70cFvnSh_Q1YnxGkpoWK1HF6hhy/it/u=3906526066,1229986310&fm=26&gp=0.jpg"
                    },
                    isAudio: false
                },
                    result => {
                        this.text += "进入是否成功'" + result.isSuceess + "';";
                        if (result.isSuceess) {
                            // 10秒后挂断
                            // setTimeout(function() {
                            //  result = lzTXLite.callQuit();
                            //  this.text = "->定时器执行结果:" + result;
                            // }, 10000);
                        }
                    },
                    quit => {
                        this.text += quit.msg;
                    },
                    error => {
                        this.text += "-> errCode:" + error.errCode + ",errMsg:" + error.errMsg;
                    },
                    newUserEnter => {
                        this.text += "-> 对方已经接通:uid'" + uid + "'";
                    }
                );
  1. 加入直播间

    liveWithParams();

    参数

    属性 类型 说明
    appid int 申请的appid
    userSig string 签名
    isAnchor bool 是否是主播
    roomId int 房间号码
    userInfo UserInfo 用户信息
    anchorInfo UserInfo 主播信息(作为主播不必传主播信息,作为观众需要传主播信息)

回调函数

属性名 签名与参数类型 说明
result {bool: isSuccess} isSucess:是否进入成功
quit {string: msg} 退出的时候调用
sendMsg {string: sendMsg} 用户在房间里面发送消息,只有作为观众发送才会调用
attention {string: userId} 关注其他用户
error {int: errCode, string: errMsg} 出错的时候调用,errInfo.errCode:错误代码, errInfo.errMsg: 错误描述
newUserEnter {string: uid} 有新观众进入直播间,只有用户作为主播的时候才会调用
//示例
lzTXLite.liveWithParams(
                {
                    appid: "你的appid",
                    userSig: "你的签名",
                    roomId: 2,
                    userInfo: {
                        userName: "",
                        userId: "",
                        imgUrl: "https://ss3.bdstatic.com/70cFv8Sh_Q1YnxGkpoWK1HF6hhy/it/u=3431500611,3630261604&fm=26&gp=0.jpg"
                    },
                    anchorInfo: {
                        userName: "主播小姐姐",
                        userId: "12",
                        imgUrl: "https://ss2.bdstatic.com/70cFvnSh_Q1YnxGkpoWK1HF6hhy/it/u=3906526066,1229986310&fm=26&gp=0.jpg"
                    },
                    isAnchor: false
                },
                    result => {
                        this.text += "进入是否成功'" + res.isSuceess + "';";
                        if(result.isSuccess) {
                            setTimeout(function() {
                                lzTXLite.receiveMsgWithSenderName("定时器", "say HEllo!!!");
                            }, 5000);

                            setTimeout(function() {
                                lzTXLite.quitLive();
                            }, 15000);

                            setTimeout(function() {
                                lzTXLite.audienceEnterRoom({
                                    userId:3,
                                    userName:"周杰伦",
                                    imgUrl:"https://ss2.bdstatic.com/70cFvnSh_Q1YnxGkpoWK1HF6hhy/it/u=3906526066,1229986310&fm=26&gp=0.jpg"
                                });
                            }, 12000);
                        }

                    },
                    quit => {
                        this.text += quit.msg;
                    },
                    sendMsg => {
                        let msg = sendMsg.msg;
                        this.text + ",我发送了消息'" + msg + "'";
                        if (msg == "你好") {
                            lzTXLite.receiveMsgWithSenderName("机器人", "Hello!!!");
                        } else if (msg == "观众加入") {
                            lzTXLite.audienceEnterRoom({
                                userId: 3,
                                userName: "王小明",
                                imgUrl: "https://ss2.bdstatic.com/70cFvnSh_Q1YnxGkpoWK1HF6hhy/it/u=3906526066,1229986310&fm=26&gp=0.jpg"
                            });
                        }
                        else if (msg == "观众离开") {
                            lzTXLite.audienceQuitRoom("1");
                        }
                    },
                    attention => {
                        this.text + ",我关注了'" + attention.uid + "'";
                    },

                    error => {
                        this.text += "-> errCode:" + error.errCode + ",errMsg:" + error.errMsg;
                    },
                    newUserEnter => {
                        this.text += "-> 新用户加入:uid'" + uid + "'";
                    }
                );

            }

5.1 接收房间里面的其他用户的消息,仅在创建了直播间以后才能调用,只对本地有效,远程用户不受影响.

receiveMsgWithSenderName();

属性 类型 说明
senderName string 发送人的名字
content string 发送内容

示例

lzTXLite.receiveMsgWithSenderName("隔壁小王", "Hello!!!");

5.2 有其他用户加入直播间,只对本地有效,远程用户不受影响.

audienceEnterRoom();

属性 类型 说明
audienceInfo UserInfo 加入的观众信息

示例

lzTXLite.audienceEnterRoom({
                        userId:2,
                        userName:"周杰伦",
                        imgUrl:this.userImgUrl});
                    }

5.3 移除直播间的用户, 只对本地有效,远程用户不受影响.

audienceQuitRoom();

属性 类型 说明
audienceId string 离开的观众Id

示例

lzTXLite.audienceQuitRoom("3");

5.4 离开直播间

quitLive();

隐私、权限声明

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

摄像头,麦克风

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

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

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