敬告:此 demo 演示为开放测试页面,仅用于开发者快速测试体验应用功能,请严格遵守开发者协议,九游会国际-九游会真人第一品牌。
♦ js-sdk 引用方式:
♦ 普通网页 script 方式加载:下载最新版 ,请在页面上调用 jsbridge 接口之前引用 jsbridge-mini.js 库;
♦ js module 方式引用:npm install ym-jsbridge
♦ 腾讯云官方参考资料:
♦
♦
♦
♦
♦ 用腾讯平台提供的 secretkey 在你的服务器端 做签名保护
♦
登录、退出、昵称头像、事件监听等全局基础接口
sdkappid:
userid:
usersig:
jsbridge.txrtc.login({ //必须,数字,腾讯平台上创建的应用id sdkappid: parseint($("#loginsdkappid_user1").val()), //必须,字符串,用户id userid : $("#loginuserid_user1").val(), //必须,字符串,用户安全签名 //如何 usersig : $("#loginusersig_user1").val() }, function(succ, data) { if (succ) { alert("登录成功"); } else { alert("登录失败\n" json.stringify(data)); } });
sdkappid:
userid:
usersig:
jsbridge.txrtc.login({ //必须,数字,腾讯平台上创建的应用id sdkappid: parseint($("#loginsdkappid_user2").val()), //必须,字符串,用户id userid : $("#loginuserid_user2").val(), //必须,字符串,用户安全签名 //如何 usersig : $("#loginusersig_user2").val() }, function(succ, data) { if (succ) { alert("登录成功"); } else { alert("登录失败\n" json.stringify(data)); } });
sdkappid:
userid:
usersig:
jsbridge.txrtc.login({ //必须,数字,腾讯平台上创建的应用id sdkappid: parseint($("#loginsdkappid_user3").val()), //必须,字符串,用户id userid : $("#loginuserid_user3").val(), //必须,字符串,用户安全签名 //如何 usersig : $("#loginusersig_user3").val() }, function(succ, data) { if (succ) { alert("登录成功"); } else { alert("登录失败\n" json.stringify(data)); } });
jsbridge.txrtc.logout(function(succ, data) { if (succ) { alert("退出成功"); } else { alert("退出失败\n" json.stringify(data)); } });
jsbridge.txrtc.getloginstatus(function(succ, data) { //data.status 字符串类型 //logined 已登录 //logining 正在登录 //logout 已退出 alert(json.stringify(data)); });
nickname:
avatar:
jsbridge.txrtc.setuserinfo({ //字符串,昵称 nickname: $("#nickname").val(), //头像,图片链接 avatar : $("#avatar").val() }, function(succ, data) { if (succ) { alert("设置成功"); } else { alert("设置失败\n" json.stringify(data)); } });
jsbridge.txrtc.requestpermission(function(succ, data) { //data.allowall 是否允许了全部权限 //data.neverask 是否勾选了“不在询问”,此时可调用 jsbridge.appsettings() 跳转到系统设置,让用户手动开启权限 alert(json.stringify(data)); });
//这是 trtc 最底层的事件监听器,其他的诸如音视频通话、直播等监听器都是基于此的二次封装 //此方法可以监听到 状态 jsbridge.txrtc.setlistener(function(succ, e) { switch (e.on) { case "onerror": //出错 break; case "onenterroom": //自己进入房间 break; case "onexitroom": //自己退出房间 break; case "onremoteuserenterroom": //其他人进入房间 break; case "onremoteuserleaveroom": //其他人退出房间 break; case "onmicdidready": //已开启麦克风 break; //... //所有事件及其含义 } showresult({ which: "setlistener", e : e }); }); /** 回调参数 e 为 json 类型 { on : 事件名称,字符串类型 data: 事件参数,json 类型,具体含义请参考腾讯官方文档 } **/
jsbridge.txrtc.removelistener(function(succ, data) { if (succ) { alert("移除成功"); } else { alert("移除失败\n" json.stringify(data)); } });
jsbridge.txrtc.getsdkversion(function(succ, data) { alert(data.version); });
enable:
jsbridge.txrtc.enablefloatwindow({ //布尔 enable: json.parse($("#enablefloat").val()) }, function(succ, data) { if (succ) { alert("设置成功"); } else { alert("设置失败\n" json.stringify(data)); } });
enable:
jsbridge.txrtc.enablemutemode({ //布尔 enable: json.parse($("#enablemute").val()) }, function(succ, data) { if (succ) { alert("设置成功"); } else { alert("设置失败\n" json.stringify(data)); } });
bellurl:
jsbridge.txrtc.setcallingbell({ //铃音链接 bellurl: $("#bellurl").val() }, function(succ, data) { if (succ) { alert("设置成功"); } else { alert("设置失败\n" json.stringify(data)); } });
userid:
mediatype:
jsbridge.txrtc.call({ //字符串,目标用户的 userid userid : $("#calluserid").val(), //字符串,通话媒体类型 //video 视频通话 //audio 音频通话 mediatype: $("#callmediatype").val() }, function(succ, data) { if (!succ) { alert("拨打失败\n" json.stringify(data)); } });
groupid:
mediatype:
jsbridge.txrtc.groupcall({ //字符串,此次通话的群id //需配合腾讯 使用 groupid : $("#groupcallgroupid").val(), //字符串数组,目标用户的 userid 列表 userids : [ "user2", "user3", "user4" ], //字符串,通话媒体类型 //video 视频通话 //audio 音频通话 mediatype: $("#groupcallmediatype").val() }, function(succ, data) { if (!succ) { alert("群组通话失败\n" json.stringify(data)); } });
jsbridge.txrtc.setcalllistener(function(succ, e) { switch (e.on) { case "onerror": break; case "oncallreceived": break; //... //所有事件及其含义 } showresult({ which: "setcalllistener", e : e }); }); /** 回调参数 e 为 json 类型 { on : 事件名称,字符串类型 data: 事件参数,json 类型,具体含义请参考腾讯官方文档 } **/
jsbridge.txrtc.removecalllistener(function(succ, data) { if (succ) { alert("移除成功"); } else { alert("移除失败\n" json.stringify(data)); } });
roomid:
speechmode:
opencamera:
openmicrophone:
jsbridge.txrtc.createchatroom({ //数字,此次通话的房间号 roomid : parseint($("#createchatroomroomid").val()), //字符串,发言模式 //free 自由发言 //apply 申请获得主持人同意后才能发言 speechmode: $("#createchatroomspeechmode").val(), //布尔,是否开启摄像头 opencamera: json.parse($("#createchatroomopencamera").val()), //布尔,是否开启麦克风 openmicrophone: json.parse($("#createchatroomopenmicrophone").val()) }, function(succ, data) { if (!succ) { alert("创建失败\n" json.stringify(data)); } });
roomid:
opencamera:
openmicrophone:
jsbridge.txrtc.enterchatroom({ //数字,此次通话的房间号 roomid : parseint($("#enterchatroomroomid").val()), //布尔,是否开启摄像头 opencamera: json.parse($("#enterchatroomopencamera").val()), //布尔,是否开启麦克风 openmicrophone: json.parse($("#enterchatroomopenmicrophone").val()) }, function(succ, data) { if (!succ) { alert("进入失败\n" json.stringify(data)); } });
jsbridge.txrtc.destroychatroom(function(succ, data) { if (succ) { alert("解散成功"); } else { alert("解散失败\n" json.stringify(data)); } });
jsbridge.txrtc.setchatroomlistener(function(succ, e) { switch (e.on) { case "onerror": break; case "ondestroyroom": break; //... //所有事件及其含义 } showresult({ which: "setchatroomlistener", e : e }); }); /** 回调参数 e 为 json 类型 { on : 事件名称,字符串类型 data: 事件参数,json 类型,具体含义请参考腾讯官方文档 } **/
jsbridge.txrtc.removechatroomlistener(function(succ, data) { if (succ) { alert("移除成功"); } else { alert("移除失败\n" json.stringify(data)); } });
roomid:
roomname:
coverurl:
jsbridge.txrtc.createvideoliveroom({ //必须,数字,房间id roomid : parseint($("#createvideoliveroomroomid").val()), //字符串,房间名称 roomname: $("#createvideoliveroomroomname").val(), //房间封面图 coverurl: $("#createvideoliveroomcoverurl").val() }, function(succ, data) { if (!succ) { alert("创建失败\n" json.stringify(data)); } });
roomid:
jsbridge.txrtc.entervideoliveroom({ //必须,数字,房间id roomid: parseint($("#entervideoliveroomroomid").val()) }, function(succ, data) { if (!succ) { alert("进入失败\n" json.stringify(data)); } });
jsbridge.txrtc.setvideoliveroomlistener(function(succ, e) { switch (e.on) { case "onerror": break; case "onroomdestroy": break; //... //所有事件及其含义 } showresult({ which: "setvideoliveroomlistener", e : e }); }); /** 回调参数 e 为 json 类型 { on : 事件名称,字符串类型 data: 事件参数,json 类型,具体含义请参考腾讯官方文档 } **/
jsbridge.txrtc.removevideoliveroomlistener(function(succ, data) { if (succ) { alert("移除成功"); } else { alert("移除失败\n" json.stringify(data)); } });
sdkappid:
userid:
usersig:
roomid:
role:
jsbridge.txrtc.enterroom({ //数字,腾讯平台上创建的应用id sdkappid: parseint($("#enterroomsdkappid_user1").val()), //字符串,用户id userid : $("#enterroomuserid_user1").val(), //字符串,用户安全签名 //如何 usersig : $("#enterroomusersig_user1").val(), //数字,房间id,进入同一个房间的用户可以相互交流 roomid : parseint($("#enterroomroomid_user1").val()), //字符串,以什么 进入房间 //anchor 主播 //audience 观众(听众) role : $("#enterroomrole_user1").val(), //字符串,场景类型,暂时只支持 audiocall 音频通话 scene : "audiocall" }, function(succ, data) { if (succ) { alert("进入成功"); } else { alert("进入失败\n" json.stringify(data)); } });
sdkappid:
userid:
usersig:
roomid:
role:
jsbridge.txrtc.enterroom({ //数字,腾讯平台上创建的应用id sdkappid: parseint($("#enterroomsdkappid_user2").val()), //字符串,用户id userid : $("#enterroomuserid_user2").val(), //字符串,用户安全签名 //如何 usersig : $("#enterroomusersig_user2").val(), //数字,房间id,进入同一个房间的用户可以相互交流 roomid : parseint($("#enterroomroomid_user2").val()), //字符串,以什么 进入房间 //anchor 主播 //audience 观众(听众) role : $("#enterroomrole_user2").val(), //字符串,场景类型,暂时只支持 audiocall 音频通话 scene : "audiocall" }, function(succ, data) { if (succ) { alert("进入成功"); } else { alert("进入失败\n" json.stringify(data)); } });
sdkappid:
userid:
usersig:
roomid:
role:
jsbridge.txrtc.enterroom({ //数字,腾讯平台上创建的应用id sdkappid: parseint($("#enterroomsdkappid_user3").val()), //字符串,用户id userid : $("#enterroomuserid_user3").val(), //字符串,用户安全签名 //如何 usersig : $("#enterroomusersig_user3").val(), //数字,房间id,进入同一个房间的用户可以相互交流 roomid : parseint($("#enterroomroomid_user3").val()), //字符串,以什么 进入房间 //anchor 主播 //audience 观众(听众) role : $("#enterroomrole_user3").val(), //字符串,场景类型,暂时只支持 audiocall 音频通话 scene : "audiocall" }, function(succ, data) { if (succ) { alert("进入成功"); } else { alert("进入失败\n" json.stringify(data)); } });
jsbridge.txrtc.setlistener(function(succ, e) { switch (e.on) { case "onmicdidready": { jsbridge.txrtc.removelistener(); alert("已打开麦克风"); break; } } }); //在 setlistener 的 e.on == "onmicdidready" 时表示成功打开麦克风 jsbridge.txrtc.startlocalaudio({ //字符串,音频质量 //default 默认 //speech 语音 //music 音乐 quality: "default" }, function(succ, data) { if (!succ) { alert("打开失败\n" json.stringify(data)); } });
jsbridge.txrtc.stoplocalaudio(function(succ, data) { if (succ) { alert("关闭成功"); } else { alert("关闭失败\n" json.stringify(data)); } });
jsbridge.txrtc.exitroom(function(succ, data) { if (succ) { alert("退出成功"); } else { alert("退出失败\n" json.stringify(data)); } });
//这是 trtc 最底层的事件监听器,其他的诸如音视频通话、直播等监听器都是基于此的二次封装 //此方法可以监听到 状态 jsbridge.txrtc.setlistener(function(succ, e) { switch (e.on) { case "onerror": //出错 break; case "onenterroom": //自己进入房间 break; case "onexitroom": //自己退出房间 break; case "onremoteuserenterroom": //其他人进入房间 break; case "onremoteuserleaveroom": //其他人退出房间 break; case "onmicdidready": //已开启麦克风 break; //... //所有事件及其含义 } showresult({ which: "setlistener", e : e }); }); /** 回调参数 e 为 json 类型 { on : 事件名称,字符串类型 data: 事件参数,json 类型,具体含义请参考腾讯官方文档 } **/
jsbridge.txrtc.removelistener(function(succ, data) { if (succ) { alert("移除成功"); } else { alert("移除失败\n" json.stringify(data)); } });
监听回调数据: