敬告:此 DEMO 演示为开放测试页面,仅用于开发者快速测试体验应用功能,请严格遵守开发者协议,了解更多。
♦ JS-SDK 引用方式:
♦ 普通网页 script 方式加载:下载最新版 jsBridge-v20251019.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/"
]
}, function(success, res) {
alert(success ? '成功' : '失败');
});
audioDirectory:
jsBridge.phoneState.readLatest({
//通话录音文件所在目录
//部分设备限制读取录音文件目录,所以仍有可能失败
audioDirectory: "{{readLatest.audioDirectory}}"
}, function(success, res) {
//读取成功时返回 res 数据类型与 setListener 的 idle 事件 data 参数类型一致
showResult({
success: success,
res: res
});
alert('已读取,滚动到本页面底部查看数据。');
});
jsBridge.phoneState.getActiveSubscriptionInfoList(function(success, res) {
/* 获取成功时
res : [
{
slotIndex: int, //卡槽序号
carrierName: string, //运营商名称
displayName: string, //显示名称
iccId: string //识别码,部分厂商返回空值
subscriptionId: int //订阅ID
}
]
*/
showResult({
success: success,
res: res
});
alert('已获取,滚动到本页面底部查看数据。');
});
事件监听
• 如需接口调用事件,请设置此监听器;
jsBridge.phoneState.setListener(function(event, data) {
switch (event) {
// 响铃
case "ringing": {
break;
}
// 接通
case "offHook": {
break;
}
// 挂断
case "idle": {
//data.call 通话呼叫信息
//data.call.id:int 记录ID
//data.call.type:int 类型,1 呼入, 2 呼出, 3 未接通, 4 语言信箱, 5 拒接, 6 阻止, 7 外部应答
//data.call.number:string 对方电话号码
//data.call.duration: int 通话时长(秒)
//data.call.date:int 时间戳(毫秒)
//data.call.accountId:string 帐户的标识符,各设备厂商实现方式可能有差异,有的返回 SIM 卡槽序号(slotIndex),有的返回 SIM 卡识别码(iccId)
//当通话时长 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();
监听回调数据: