敬告:此 DEMO 演示为开放测试页面,仅用于开发者快速测试体验应用功能,请严格遵守开发者协议,了解更多。
♦ JS-SDK 引用方式:
♦ 普通网页 script 方式加载:下载最新版 jsBridge-v20250715.zip,请在页面上调用 jsBridge 接口之前引用 jsbridge-mini.js 库;
♦ js module 方式引用:npm install ym-jsbridge 具体请参考 npm package
准备
//请求手机通话状态、读取通话记录、读取外部存储权限 jsBridge.phoneState.requestPermissions(function(success, res) { if (success && res.granted) { alert("已授权"); } else { alert("已拒绝,不再询问: " + res.neverAskAgain); } });
needAudio:
notificationTitle:
jsBridge.phoneState.config({ //后台服务的状态栏通知标题(需要开启通知权限,减小 APP 被系统杀掉的概率) //修改通知标题后需要 removeListener 之后重新 setListener 才会生效 notificationTitle: "{{config.notificationTitle}}", //是否需要返回通话录音 //注意:APP 无法录制通话语音,而是读取系统的通话录音文件!! //可系统设置为通话自动录音(一般在拨号盘有设置菜单)或者电话接通后手动点击录音 needAudio: {{config.needAudio}}, //如果获取不了通话录音,这里可以指定一下录音文件所在目录 //不同厂商的不同机型保存录音文件的目录可能不同 //部分设备限制读取录音文件目录,所以仍有可能失败 audioDirectories: [ "/Music/Recordings/Call Recordings/", "/Sounds/CallRecord/", "/Recordings/", "/CallRecordings/", "/MIUI/sound_recorder/call_rec/" ] }, function(success, res) { alert(success ? '成功' : '失败'); });
事件监听
• 如需接口调用事件,请设置此监听器;
jsBridge.phoneState.setListener(function(event, data) { switch (event) { // 响铃 case "ringing": { break; } // 接通 case "offHook": { break; } // 挂断 case "idle": { //data.call 通话呼叫信息 //data.call.number 对方电话号码 //data.call.duration 通话时长(秒) //data.call.date 时间戳(毫秒) //当通话时长 data.call.duration > 0 时的通话录音: //data.audio 通话录音信息(config 接口需设置 needAudio: true 才会返回录音信息) //date.audio.path 文件路径 //data.audio.name 名称 //data.audio.date 时间戳(毫秒) //data.audio.base64Content 文件内容的 BASE64 编码 //data.audio.error 读取录音文件失败时的错误信息 break; } } //此函数仅用于显示回调参数在本 DEMO 页面上 showResult({ event: event, data: data }); }); //请拉到页面底部查看回调数据信息 $('html,body').animate({ scrollTop: $('#view').offset().top }, 500); /** 回调参数说明: event - 事件代码,字符串 data - 事件数据,JSON 对象 **/
//移除监听器,不会再收到回调通知 //在需要时可重新调用 setListener jsBridge.phoneState.removeListener();
监听回调数据: