<!DOCTYPE html>
<html>

<head>

<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
<title>README</title>


<style type="text/css">
body {
  font-family: Helvetica, arial, sans-serif;
  font-size: 14px;
  line-height: 1.6;
  padding-top: 10px;
  padding-bottom: 10px;
  background-color: white;
  padding: 30px; }

body > *:first-child {
  margin-top: 0 !important; }
body > *:last-child {
  margin-bottom: 0 !important; }

a {
  color: #4183C4; }
a.absent {
  color: #cc0000; }
a.anchor {
  display: block;
  padding-left: 30px;
  margin-left: -30px;
  cursor: pointer;
  position: absolute;
  top: 0;
  left: 0;
  bottom: 0; }

h1, h2, h3, h4, h5, h6 {
  margin: 20px 0 10px;
  padding: 0;
  font-weight: bold;
  -webkit-font-smoothing: antialiased;
  cursor: text;
  position: relative; }

h1:hover a.anchor, h2:hover a.anchor, h3:hover a.anchor, h4:hover a.anchor, h5:hover a.anchor, h6:hover a.anchor {
  background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA09pVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoMTMuMCAyMDEyMDMwNS5tLjQxNSAyMDEyLzAzLzA1OjIxOjAwOjAwKSAgKE1hY2ludG9zaCkiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6OUM2NjlDQjI4ODBGMTFFMTg1ODlEODNERDJBRjUwQTQiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6OUM2NjlDQjM4ODBGMTFFMTg1ODlEODNERDJBRjUwQTQiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo5QzY2OUNCMDg4MEYxMUUxODU4OUQ4M0REMkFGNTBBNCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo5QzY2OUNCMTg4MEYxMUUxODU4OUQ4M0REMkFGNTBBNCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PsQhXeAAAABfSURBVHjaYvz//z8DJYCRUgMYQAbAMBQIAvEqkBQWXI6sHqwHiwG70TTBxGaiWwjCTGgOUgJiF1J8wMRAIUA34B4Q76HUBelAfJYSA0CuMIEaRP8wGIkGMA54bgQIMACAmkXJi0hKJQAAAABJRU5ErkJggg==) no-repeat 10px center;
  text-decoration: none; }

h1 tt, h1 code {
  font-size: inherit; }

h2 tt, h2 code {
  font-size: inherit; }

h3 tt, h3 code {
  font-size: inherit; }

h4 tt, h4 code {
  font-size: inherit; }

h5 tt, h5 code {
  font-size: inherit; }

h6 tt, h6 code {
  font-size: inherit; }

h1 {
  font-size: 28px;
  color: black; }

h2 {
  font-size: 24px;
  border-bottom: 1px solid #cccccc;
  color: black; }

h3 {
  font-size: 18px; }

h4 {
  font-size: 16px; }

h5 {
  font-size: 14px; }

h6 {
  color: #777777;
  font-size: 14px; }

p, blockquote, ul, ol, dl, li, table, pre {
  margin: 15px 0; }

hr {
  background: transparent url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAYAAAAECAYAAACtBE5DAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6OENDRjNBN0E2NTZBMTFFMEI3QjRBODM4NzJDMjlGNDgiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6OENDRjNBN0I2NTZBMTFFMEI3QjRBODM4NzJDMjlGNDgiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo4Q0NGM0E3ODY1NkExMUUwQjdCNEE4Mzg3MkMyOUY0OCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo4Q0NGM0E3OTY1NkExMUUwQjdCNEE4Mzg3MkMyOUY0OCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PqqezsUAAAAfSURBVHjaYmRABcYwBiM2QSA4y4hNEKYDQxAEAAIMAHNGAzhkPOlYAAAAAElFTkSuQmCC) repeat-x 0 0;
  border: 0 none;
  color: #cccccc;
  height: 4px;
  padding: 0;
}

body > h2:first-child {
  margin-top: 0;
  padding-top: 0; }
body > h1:first-child {
  margin-top: 0;
  padding-top: 0; }
  body > h1:first-child + h2 {
    margin-top: 0;
    padding-top: 0; }
body > h3:first-child, body > h4:first-child, body > h5:first-child, body > h6:first-child {
  margin-top: 0;
  padding-top: 0; }

a:first-child h1, a:first-child h2, a:first-child h3, a:first-child h4, a:first-child h5, a:first-child h6 {
  margin-top: 0;
  padding-top: 0; }

h1 p, h2 p, h3 p, h4 p, h5 p, h6 p {
  margin-top: 0; }

li p.first {
  display: inline-block; }
li {
  margin: 0; }
ul, ol {
  padding-left: 30px; }

ul :first-child, ol :first-child {
  margin-top: 0; }

dl {
  padding: 0; }
  dl dt {
    font-size: 14px;
    font-weight: bold;
    font-style: italic;
    padding: 0;
    margin: 15px 0 5px; }
    dl dt:first-child {
      padding: 0; }
    dl dt > :first-child {
      margin-top: 0; }
    dl dt > :last-child {
      margin-bottom: 0; }
  dl dd {
    margin: 0 0 15px;
    padding: 0 15px; }
    dl dd > :first-child {
      margin-top: 0; }
    dl dd > :last-child {
      margin-bottom: 0; }

blockquote {
  border-left: 4px solid #dddddd;
  padding: 0 15px;
  color: #777777; }
  blockquote > :first-child {
    margin-top: 0; }
  blockquote > :last-child {
    margin-bottom: 0; }

table {
  padding: 0;border-collapse: collapse; }
  table tr {
    border-top: 1px solid #cccccc;
    background-color: white;
    margin: 0;
    padding: 0; }
    table tr:nth-child(2n) {
      background-color: #f8f8f8; }
    table tr th {
      font-weight: bold;
      border: 1px solid #cccccc;
      margin: 0;
      padding: 6px 13px; }
    table tr td {
      border: 1px solid #cccccc;
      margin: 0;
      padding: 6px 13px; }
    table tr th :first-child, table tr td :first-child {
      margin-top: 0; }
    table tr th :last-child, table tr td :last-child {
      margin-bottom: 0; }

img {
  max-width: 100%; }

span.frame {
  display: block;
  overflow: hidden; }
  span.frame > span {
    border: 1px solid #dddddd;
    display: block;
    float: left;
    overflow: hidden;
    margin: 13px 0 0;
    padding: 7px;
    width: auto; }
  span.frame span img {
    display: block;
    float: left; }
  span.frame span span {
    clear: both;
    color: #333333;
    display: block;
    padding: 5px 0 0; }
span.align-center {
  display: block;
  overflow: hidden;
  clear: both; }
  span.align-center > span {
    display: block;
    overflow: hidden;
    margin: 13px auto 0;
    text-align: center; }
  span.align-center span img {
    margin: 0 auto;
    text-align: center; }
span.align-right {
  display: block;
  overflow: hidden;
  clear: both; }
  span.align-right > span {
    display: block;
    overflow: hidden;
    margin: 13px 0 0;
    text-align: right; }
  span.align-right span img {
    margin: 0;
    text-align: right; }
span.float-left {
  display: block;
  margin-right: 13px;
  overflow: hidden;
  float: left; }
  span.float-left span {
    margin: 13px 0 0; }
span.float-right {
  display: block;
  margin-left: 13px;
  overflow: hidden;
  float: right; }
  span.float-right > span {
    display: block;
    overflow: hidden;
    margin: 13px auto 0;
    text-align: right; }

code, tt {
  margin: 0 2px;
  padding: 0 5px;
  white-space: nowrap;
  border: 1px solid #eaeaea;
  background-color: #f8f8f8;
  border-radius: 3px; }

pre code {
  margin: 0;
  padding: 0;
  white-space: pre;
  border: none;
  background: transparent; }

.highlight pre {
  background-color: #f8f8f8;
  border: 1px solid #cccccc;
  font-size: 13px;
  line-height: 19px;
  overflow: auto;
  padding: 6px 10px;
  border-radius: 3px; }

pre {
  background-color: #f8f8f8;
  border: 1px solid #cccccc;
  font-size: 13px;
  line-height: 19px;
  overflow: auto;
  padding: 6px 10px;
  border-radius: 3px; }
  pre code, pre tt {
    background-color: transparent;
    border: none; }

sup {
    font-size: 0.83em;
    vertical-align: super;
    line-height: 0;
}

kbd {
  display: inline-block;
  padding: 3px 5px;
  font-size: 11px;
  line-height: 10px;
  color: #555;
  vertical-align: middle;
  background-color: #fcfcfc;
  border: solid 1px #ccc;
  border-bottom-color: #bbb;
  border-radius: 3px;
  box-shadow: inset 0 -1px 0 #bbb
}

* {
	-webkit-print-color-adjust: exact;
}
@media screen and (min-width: 914px) {
    body {
        width: 854px;
        margin:0 auto;
    }
}
@media print {
	table, pre {
		page-break-inside: avoid;
	}
	pre {
		word-wrap: break-word;
	}
}
</style>


</head>

<body>

<h1 id="toc_0">JSBridge协议文档</h1>

<h2 id="toc_1">基本协议</h2>

<h3 id="toc_2">1.JS调用Native</h3>

<p>JS通过特定方式传递此json字符串到客户端
<code>
    JSON格式  
    {
        &quot;method&quot;:&quot;methodname&quot;,        //调用方法名称(必须有)
        &quot;callback&quot;:&quot;callback name&quot;,   //设置回调入口(可以没有)
        &quot;params&quot;:{                    //调用所带的参数(可以没有)
                &quot;param1&quot;:value1,
                &quot;param2&quot;:value2
        },
        &quot;extra&quot;:&quot;optional&quot;            //未来预留的字段(可以没有)
    }
</code></p>

<p>调用方法</p>

<p>1,通知ios消息的方式</p>

<div><pre><code class="language-none">iosH5_.H5CallNative(data); // data 为json字符串</code></pre></div>

<p>2,通知安卓消息的方式</p>

<div><pre><code class="language-none">window.prompt(data); // data 为json字符串</code></pre></div>

<h3 id="toc_3">2. Native回调JS</h3>

<div><pre><code class="language-none">    {
        &quot;errcode&quot;: 0        //0表示成功,  其他为错误码,见后面
        &quot;errmsg&quot;: &quot;xxx&quot;     //错误信息,可以为空
        &quot;data&quot;:{            //调用所带的参数
            &quot;param1&quot;:value1,
            &quot;param2&quot;:value2
        },
        &quot;extra&quot;:&quot;optional&quot;  //未来预留的字段
    }</code></pre></div>

<p>客户端通过 <code>loadUrl(&quot;javascript:callback({callback_JSON})&quot;)</code>的方式回调</p>

<h2 id="toc_4">接口定义</h2>

<table>
<thead>
<tr>
<th>method</th>
<th>描述</th>
<th>使用场景</th>
<th>最低版本</th>
</tr>
</thead>

<tbody>
<tr>
<td><a href="JSBridge/getScreenSize.md">getScreenSize</a></td>
<td>获取当前手机屏幕尺寸</td>
<td>通用</td>
<td>无</td>
</tr>
<tr>
<td><a href="JSBridge/getDevInfo.md">getDevInfo</a></td>
<td>客户端设备信息</td>
<td>通用</td>
<td>无</td>
</tr>
<tr>
<td><a href="JSBridge/vibrate.md">vibrate</a></td>
<td>调用手机震动功能</td>
<td>通用</td>
<td>6.1.9</td>
</tr>
<tr>
<td><a href="JSBridge/showToast.md">showToast</a></td>
<td>弹Native toast</td>
<td>通用</td>
<td>无</td>
</tr>
<tr>
<td><a href="JSBridge/log.md">log</a></td>
<td>记录native log</td>
<td>通用</td>
<td>无</td>
</tr>
<tr>
<td><a href="JSBridge/setValue.md">setValue</a></td>
<td>存储到客户端</td>
<td>通用</td>
<td>无</td>
</tr>
<tr>
<td><a href="JSBridge/getValue.md">getValue</a></td>
<td>读取自客户端</td>
<td>通用</td>
<td>无</td>
</tr>
<tr>
<td><a href="JSBridge/checkUpdate.md">checkUpdate</a></td>
<td>检测更新</td>
<td>通用</td>
<td>6.1.9</td>
</tr>
<tr>
<td><a href="JSBridge/registerMessageChannel.md">registerMessageChannel</a></td>
<td>创建长连通道</td>
<td>直播间</td>
<td>无</td>
</tr>
<tr>
<td><a href="JSBridge/sendMessageToChannel.md">sendMessageToChannel</a></td>
<td>JS向长连发消息</td>
<td>直播间</td>
<td>无</td>
</tr>
<tr>
<td><a href="JSBridge/changeStatusBarShowStatus.md">changeStatusBarShowStatus</a></td>
<td>控制ios端状态栏的隐藏和显示</td>
<td>直播间</td>
<td>6.2.1</td>
</tr>
<tr>
<td><a href="JSBridge/showWebView.md">showWebView</a></td>
<td>客户端显示隐藏webview</td>
<td>直播间</td>
<td>无</td>
</tr>
<tr>
<td><a href="JSBridge/requestHostLayout.md">requestHostLayout</a></td>
<td>H5控制客户端变更布局</td>
<td>直播间</td>
<td>6.1.9</td>
</tr>
<tr>
<td><a href="JSBridge/setHotRegions.md">setHotRegions</a></td>
<td>告知客户端H5热区变更</td>
<td>直播间</td>
<td>无</td>
</tr>
<tr>
<td><a href="JSBridge/showWanPopup.md">showWanPopup</a></td>
<td>弹出玩按钮面板(已过时用route)</td>
<td>直播间</td>
<td>无</td>
</tr>
<tr>
<td><a href="JSBridge/getAnchors.md">getAnchors</a></td>
<td>获取“玩”按钮的锚点</td>
<td>直播间</td>
<td>无</td>
</tr>
<tr>
<td><a href="JSBridge/getRoomInfo.md">getRoomInfo</a></td>
<td>获取主播uid、用户uid、直播间liveID</td>
<td>直播间</td>
<td>无</td>
</tr>
<tr>
<td><a href="JSBridge/registerRoomCallback.md">registerRoomCallback</a></td>
<td>注册监听直播间状态切换</td>
<td>直播间</td>
<td>无</td>
</tr>
<tr>
<td><a href="JSBridge/registerMenuClickCallback.md">registerMenuClickCallback</a></td>
<td>注册客户端玩菜单监听</td>
<td>直播间</td>
<td>无</td>
</tr>
<tr>
<td><a href="JSBridge/registerClearScreenCallback.md">registerClearScreenCallback</a></td>
<td>注册清屏监听</td>
<td>直播间</td>
<td>无</td>
</tr>
<tr>
<td><a href="JSBridge/registerScreenSizeCallback.md">registerScreenSizeCallback</a></td>
<td>注册屏幕尺寸变化监听</td>
<td>直播间</td>
<td>无</td>
</tr>
<tr>
<td><a href="JSBridge/registerHostLifeCycleCallback.md">registerHostLifeCycleCallback</a></td>
<td>注册客户端生命周期监听</td>
<td>直播间</td>
<td>无</td>
</tr>
<tr>
<td><a href="JSBridge/registerShakeCallback.md">registerShakeCallback</a></td>
<td>监听手机摇一摇操作</td>
<td>直播间</td>
<td>6.2.0</td>
</tr>
<tr>
<td><a href="JSBridge/getPocket.md">getPocket</a></td>
<td>获得用户余额</td>
<td>直播间</td>
<td>无</td>
</tr>
<tr>
<td><a href="JSBridge/purchase.md">purchase</a></td>
<td>功能付费</td>
<td>直播间</td>
<td>无</td>
</tr>
<tr>
<td><a href="JSBridge/callShare.md">callShare</a></td>
<td>调用客户端分享面板(已过时用route)</td>
<td>直播间 落地页</td>
<td>6.1.7</td>
</tr>
<tr>
<td><a href="JSBridge/requestLogin.md">requestLogin</a></td>
<td>调起客户端登录面板(仅安卓)</td>
<td>直播间 落地页</td>
<td>6.1.7</td>
</tr>
<tr>
<td><a href="JSBridge/playSound.md">playSound</a></td>
<td>播放音效</td>
<td>直播间</td>
<td>6.2.0</td>
</tr>
<tr>
<td><a href="JSBridge/playVideo.md">playVideo</a></td>
<td>播放视频</td>
<td>秀场&amp;公共房</td>
<td>Android 7.7.3 iOS 7.7.8</td>
</tr>
<tr>
<td><a href="JSBridge/preloadRes.md">preloadRes</a></td>
<td>预下载资源</td>
<td>直播间</td>
<td>6.2.0</td>
</tr>
<tr>
<td><a href="JSBridge/requestFaceDetection.md">requestFaceDetection</a></td>
<td>发起人脸检测</td>
<td>直播间</td>
<td>待定</td>
</tr>
<tr>
<td><a href="JSBridge/mallPay.md">mallPay</a></td>
<td>电商支付</td>
<td>通用</td>
<td>6.6.7</td>
</tr>
<tr>
<td><a href="JSBridge/getPublicRoomInfo.md">getPublicRoomInfo</a></td>
<td>获取公共房信息</td>
<td>公共房</td>
<td>6.7.0</td>
</tr>
<tr>
<td><a href="JSBridge/registerPublicRoomInfoCallback.md">registerPublicRoomInfoCallback</a></td>
<td>注册公共房信息变化</td>
<td>公共房</td>
<td>6.7.1</td>
</tr>
<tr>
<td><a href="JSBridge/registerKeyboardEventCallback.md">registerKeyboardEventCallback</a></td>
<td>监听客户端键盘事件</td>
<td>通用</td>
<td>6.7.1</td>
</tr>
<tr>
<td><a href="JSBridge/close.md">close</a></td>
<td>关闭</td>
<td>通用</td>
<td>6.7.2</td>
</tr>
<tr>
<td><a href="JSBridge/showProomMiniProfile.md">showProomMiniProfile</a></td>
<td>公共房打开用户迷你卡(已过时用route)</td>
<td>公共房</td>
<td>6.7.x</td>
</tr>
<tr>
<td><a href="JSBridge/showProomShowGift.md">showProomShowGift</a></td>
<td>公共房打开用户礼物面板(已过时用route)</td>
<td>公共房</td>
<td>6.7.x</td>
</tr>
<tr>
<td><a href="JSBridge/getStatusBarHeight.md">getStatusBarHeight</a></td>
<td>获得状态栏高度</td>
<td>公共房</td>
<td>6.7.x</td>
</tr>
<tr>
<td><a href="JSBridge/iap.md">InAppPurchase</a></td>
<td>iOS内购相关(仅iOS)</td>
<td>通用</td>
<td>6.9.2</td>
</tr>
<tr>
<td><a href="JSBridge/registerVisibilityChangeCallback.md">registerVisibilityChangeCallback</a></td>
<td>WebView可见性</td>
<td>通用</td>
<td>6.9.6</td>
</tr>
<tr>
<td><a href="JSBridge/registerSyncPullInfoCallback.md">registerSyncPullInfoCallback</a></td>
<td>当调用registerSyncPullKeys中的key有变化时,客户端会调用此方法通知H5,将变化的数据传给H5</td>
<td>通用</td>
<td>7.0.x</td>
</tr>
<tr>
<td><a href="JSBridge/getSyncPullInfo.md">getSyncPullInfo</a></td>
<td>获取sync/pull返回的数据(客户端处理后的)</td>
<td>通用</td>
<td>7.0.x</td>
</tr>
<tr>
<td><a href="JSBridge/invokePRoomLayoutMethods.md">invokePRoomLayoutMethods</a></td>
<td>调用布局控件的setter,getter,methods</td>
<td>公共房</td>
<td>7.0.x</td>
</tr>
<tr>
<td><a href="JSBridge/getSign.md">getSign</a></td>
<td>H5调用服务端某些接口时需要客户端提供的签名</td>
<td>通用</td>
<td>7.0.x</td>
</tr>
<tr>
<td><a href="JSBridge/registerPLayoutOnClickCallback.md">registerPLayoutOnClickCallback</a></td>
<td>H5注册当点击某个布局控件时的回调</td>
<td>公共房</td>
<td>7.0.x</td>
</tr>
<tr>
<td><a href="JSBridge/getParameters.md">getParameters</a></td>
<td>获取客户端指定参数</td>
<td>通用</td>
<td>7.1.5+</td>
</tr>
<tr>
<td><a href="JSBridge/invokeMultiPkMethods.md">invokeMultiPkMethods</a></td>
<td>多人pk布局相关接口</td>
<td>通用</td>
<td>7.1.5+</td>
</tr>
<tr>
<td><a href="JSBridge/registerMultiPkCallback.md">registerMultiPkCallback</a></td>
<td>礼物面板点击用户头像的回调,通知H5有没有选中主播</td>
<td>通用</td>
<td>7.1.5+</td>
</tr>
<tr>
<td><a href="JSBridge/invokePkMethod.md">invokePkMethod</a></td>
<td>主播端 底部面板线上pk入口</td>
<td>通用</td>
<td>7.1.5+</td>
</tr>
<tr>
<td><a href="JSBridge/closePage.md">closePage</a></td>
<td>关闭半屏H5</td>
<td>通用</td>
<td>7.1.5+</td>
</tr>
<tr>
<td><a href="JSBridge/route.md">route</a></td>
<td>可路由页面列表</td>
<td>通用</td>
<td>7.1.7+</td>
</tr>
<tr>
<td><a href="JSBridge/setAudioDisable.md">setAudioDisable</a></td>
<td>连麦禁用音频</td>
<td>通用</td>
<td>7.2.0+</td>
</tr>
<tr>
<td><a href="JSBridge/setVideoDisable.md">setVideoDisable</a></td>
<td>连麦禁用视频</td>
<td>通用</td>
<td>7.2.0+</td>
</tr>
<tr>
<td><a href="JSBridge/subPaths.md">subPaths</a></td>
<td>获取文件目录中的内容</td>
<td>通用</td>
<td>7.2.1+</td>
</tr>
<tr>
<td><a href="JSBridge/downloadFile.md">downloadFile</a></td>
<td>下载文件</td>
<td>通用</td>
<td>7.2.1+</td>
</tr>
<tr>
<td><a href="JSBridge/disableFeatures.md">disableFeatures</a></td>
<td>禁用直播间的一些功能</td>
<td>直播间</td>
<td>7.2.1+</td>
</tr>
<tr>
<td><a href="JSBridge/startAudioMixing.md">startAudioMixing</a></td>
<td>指定本地音频文件来和麦克风采集的音频流进行混音和替换(用音频文件替换麦克风采集的音 频流),可以通过参数选择是否让对方听到本地播放的音频和指定循环播放的次数</td>
<td>直播间</td>
<td>7.2.1+</td>
</tr>
<tr>
<td><a href="JSBridge/stopAudioMixing.md">stopAudioMixing</a></td>
<td>停止播放本地音频文件及混音。 该方法停止播放伴奏。请在频道内调用该方法。</td>
<td>直播间</td>
<td>7.2.1+</td>
</tr>
<tr>
<td><a href="JSBridge/pauseAudioMixing.md">pauseAudioMixing</a></td>
<td>暂停播放音乐文件及混音。 该方法暂停播放伴奏。请在频道内调用该方法。</td>
<td>直播间</td>
<td>7.2.1+</td>
</tr>
<tr>
<td><a href="JSBridge/resumeAudioMixing.md">resumeAudioMixing</a></td>
<td>恢复播放音乐文件及混音。 该方法恢复混音,继续播放伴奏。请在频道内调用该方法。</td>
<td>直播间</td>
<td>7.2.1+</td>
</tr>
<tr>
<td><a href="JSBridge/adjustAudioMixingVolume.md">adjustAudioMixingVolume</a></td>
<td>调节音乐文件的播放音量。 该方法调节混音里伴奏在本端和远端播放的音量大小。请在频道内调用该方法。</td>
<td>直播间</td>
<td>7.2.1+</td>
</tr>
<tr>
<td><a href="JSBridge/adjustAudioMixingPlayoutVolume.md">adjustAudioMixingPlayoutVolume</a></td>
<td>调节音乐文件的本地播放音量。 该方法调节混音里音乐文件在本端播放的音量大小。请在频道内调用该方法。</td>
<td>直播间</td>
<td>7.2.1+</td>
</tr>
<tr>
<td><a href="JSBridge/adjustAudioMixingPublishVolume.md">adjustAudioMixingPublishVolume</a></td>
<td>调节音乐文件的远端播放音量。 该方法调节混音里音乐文件在远端播放的音量大小。请在频道内调用该方法。</td>
<td>直播间</td>
<td>7.2.1+</td>
</tr>
<tr>
<td><a href="JSBridge/getAudioMixingPlayoutVolume.md">getAudioMixingPlayoutVolume</a></td>
<td>获取音乐文件的本地播放音量。 该方法获取音乐文件的本地播放音量。该接口可以方便开发者排查音量相关问题。</td>
<td>直播间</td>
<td>7.2.1+</td>
</tr>
<tr>
<td><a href="JSBridge/getAudioMixingPublishVolume.md">getAudioMixingPublishVolume</a></td>
<td>获取音乐文件的远端播放音量。 该方法获取音乐文件的远端播放音量。该接口可以方便开发者排查音量相关问题。</td>
<td>直播间</td>
<td>7.2.1+</td>
</tr>
<tr>
<td><a href="JSBridge/getAudioMixingDuration.md">getAudioMixingDuration</a></td>
<td>获取音乐文件的时长。 该方法获取音乐文件时长,单位为毫秒。请在频道内调用该方法。如果返回值 &lt; 0,表明调用失败。</td>
<td>直播间</td>
<td>7.2.1+</td>
</tr>
<tr>
<td><a href="JSBridge/getAudioMixingCurrentPosition.md">getAudioMixingCurrentPosition</a></td>
<td>获取音乐文件的播放进度。 该方法获取当前伴奏播放进度,单位为毫秒。请在频道内调用该方法。</td>
<td>直播间</td>
<td>7.2.1+</td>
</tr>
<tr>
<td><a href="JSBridge/setAudioMixingPosition.md">setAudioMixingPosition</a></td>
<td>设置音乐文件的播放位置。 该方法可以设置音频文件的播放位置,这样你可以根据实际情况播放文件,而不是非得从头到尾播放一个文件。</td>
<td>直播间</td>
<td>7.2.1+</td>
</tr>
<tr>
<td><a href="JSBridge/getViewsFrame.md">getViewsFrame</a></td>
<td>获取直播间控件相对于webView左上角的frame(x,y,w,h)</td>
<td>直播间</td>
<td>7.2.1+</td>
</tr>
<tr>
<td><a href="JSBridge/confirmLocationPermission.md">confirmLocationPermission</a></td>
<td>客户端传给h5定位结果</td>
<td>派对房</td>
<td>7.2.5+</td>
</tr>
<tr>
<td><a href="JSBridge/recharge.md">recharge</a></td>
<td>H5调用充值弹框</td>
<td>通用</td>
<td>7.5.5+</td>
</tr>
<tr>
<td><a href="JSBridge/registerRefreshBalanceCallback.md">registerRefreshBalanceCallback</a></td>
<td>注册一个充值页收起时通知h5的回调</td>
<td>通用</td>
<td>7.5.5+</td>
</tr>
<tr>
<td><a href="JSBridge/registerHappyPkPositionChange.md">registerHappyPkPositionChange</a></td>
<td>欢乐 PK 视频窗口位置</td>
<td>通用</td>
<td>7.8.5+</td>
</tr>
<tr>
<td><a href="JSBridge/registerHappyPkStatusChange.md">registerHappyPkStatusChange</a></td>
<td>欢乐 PK UI 切换状态</td>
<td>通用</td>
<td>7.8.5+</td>
</tr>
<tr>
<td><a href="JSBridge/registerChatPushCallback.md">registerChatPushCallback</a></td>
<td>注册长连消息</td>
<td>通用</td>
<td>7.8.5+</td>
</tr>
<tr>
<td><a href="JSBridge/showLinkmicApplyView.md">showLinkmicApplyView</a></td>
<td>调起客户端上麦预览窗</td>
<td>通用</td>
<td></td>
</tr>
<tr>
<td><a href="JSBridge/registerCancelLinkmicCallback.md">registerCancelLinkmicCallback</a></td>
<td>注册给客户端结束连线回调</td>
<td>通用</td>
<td></td>
</tr>
<tr>
<td><a href="JSBridge/registerMiniProfileCallback.md">registerMiniProfileCallback</a></td>
<td>注册给客户端连麦状态,文案及点击事件回调</td>
<td>通用</td>
<td></td>
</tr>
</tbody>
</table>

<h2 id="toc_5">错误代码</h2>

<div><pre><code class="language-none">    OK = 0;                  //正常返回
    ERR_UNKNOWN = 90000;     //未知错误
    ERR_VALUE_NOT_FOUND = 90001;     //无法取到对应的值
    ERR_INVALID_OPRERATION = 91001;  //无效操作
    ERR_BALANCE_NOT_ENOUGH = 92001;  //余额不足

    /////////////////////服务端相关ERRCODE
    ERR_SERVER_NEED_HTTPS = 1006;       //该接口应当为https请求
    ERR_SERVER_INVALID_PARAMS = 1005;   //请求参数有误
    ERR_SERVER_INVALID_IP = 1007;       //请求方IP不合法
    ERR_SERVER_PURCHASE_FAIL = 1166;    //付费失败
    
    </code></pre></div>




</body>

</html>