敬告:此 demo 演示为开放测试页面,仅用于开发者快速测试体验应用功能,请严格遵守开发者协议。
♦ js-sdk 引用方式:
♦ 普通网页 script 方式加载:下载最新版 ,请在页面上调用 jsbridge 接口之前引用 jsbridge-mini.js 库;
♦ js module 方式引用:npm install ym-jsbridge
操作
//请求手机通话状态、读取通话记录、读取外部存储权限
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();
监听回调数据: