更新记录
1.0.3(2024-03-05)
1、增加是否双卡判断; 2、增加指定 SIM 卡拨号。
1.0.2(2023-11-24)
1、增加免提功能; 2、增加通话录音功能(Android 9及以下使用,Android 10及以上为普通录音)
1.0.1(2023-09-17)
1、修复App内号与系统拨号来回切换时的显示问题;
查看更多平台兼容性
Android | Android CPU类型 | iOS |
---|---|---|
适用版本区间:5.0 - 12.0 | armeabi-v7a:支持,arm64-v8a:支持,x86:未测试 | × |
原生插件通用使用流程:
- 购买插件,选择该插件绑定的项目。
- 在HBuilderX里找到项目,在manifest的app原生插件配置中勾选模块,如需要填写参数则参考插件作者的文档添加。
- 根据插件作者的提供的文档开发代码,在代码中引用插件,调用插件功能。
- 打包自定义基座,选择插件,得到自定义基座,然后运行时选择自定义基座,进行log输出测试。
- 开发完毕后正式云打包
付费原生插件目前不支持离线打包。
Android 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/android
iOS 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/ios
注意事项:使用HBuilderX2.7.14以下版本,如果同一插件且同一appid下购买并绑定了多个包名,提交云打包界面提示包名绑定不一致时,需要在HBuilderX项目中manifest.json->“App原生插件配置”->”云端插件“列表中删除该插件重新选择
插件使用说明
插件声明
- 购买本插件前,请先试用,并充分自测确认满足需求之后再行购买。一经购买,概不退还;
- 如有使用上的疑问、bug或者要求定制插件,可以QQ(192227519)联系作者;
- 本插件支持定制,定制费用另算;
- 请在合法范围内使用,若使用本插件做非法开发,本方概不负责。
注意事项
- 必须设置当前App为默认通话应用; 必须打开监听(使App显示在其他应用的上层); 必须开启需要的权限; 请根据需要在合适的时机调用相关API;
- 记得配置相关的权限, 具体见权限声明;
- 插件虽然向下兼容至21(Android 5.0), 但功能必须在23(Android 6.0)及以上才可以使用;
- 部分型号手机不支持设置默认通话应用,因此不保证在所有手机都能使用, 请谨慎购买。
插件引入
首先需要通过 uni.requireNativePlugin("ModuleName") 获取 module
var callModule = uni.requireNativePlugin('LY-DCPhoneCallPlugin-PhoneCallModule');
插件Api说明
1.1 设置当前App为默认通话应用
必须设置, 否则插件无法正常使用
callModule.setToTheDefaultCallApplication();
1.2 检测当前App是否为默认通话应用
let res = callModule.isDefaultCallApplication();
返回值: Boolean, true默认通话应用, false非默认通话应用
1.3 通话页面配置项
callModule.setCallPageConfig(config);
config 参数说明
成员名 | 数据类型 | 必填 | 说明 | 适用 |
---|---|---|---|---|
recordPath | String | 否 | 录音文件保存路径 | Android |
bgImg | String | 否 | 背景图 | Android |
pickUpImg | String | 否 | 接听图标 | Android |
hangUpImg | String | 否 | 挂断图标 | Android |
callInlabel | String | 否 | 呼入文案 | Android |
callOutlabel | String | 否 | 呼出文案 | Android |
labelColor | String | 否 | 呼入呼出文案字体颜色 | Android |
isRealPhone | Boolean | 否 | 接听手机号是否明文显示, 默认true, false时手机号中间四位**** | Android |
showTxtColor | String | 否 | 展示手机号字体颜色 | Android |
showTxtSize | int | 否 | 展示手机号字体大小 | Android |
pickUpColor | String | 否 | 接听 字体颜色 | Android |
hangUpColor | String | 否 | 挂断 字体颜色 | Android |
1.4 监听通话状态
callModule.openCallListener(callback);
返回值字段callState说明:
pickup // 摘机,接听或拨出电话时触发
hangup // 待机,即无电话时,挂断时触发
ringing // 响铃,来电时触发
calling // 通话时不停回调,此状态下返回值会有time字段,代表当前通话时长
参数说明
成员名 | 数据类型 | 必填 | 说明 | 适用 |
---|---|---|---|---|
callState | String | 是 | 通话状态 | Android |
time | int | 否 | 通话时长 | Android |
1.5 判断监听服务是否正在运行
let res = callModule.listeningServiceIsRuning();
返回值: Boolean true正在运行, false未运行
1.6 移除监听
callModule.removeCallListener();
1.7 判断是否双卡, Android 5.1以上使用
let status = callModule.isMultiSim();
返回值: Boolean true双卡; false单卡
注意: 此方法需要读取手机电话权限, 权限不允许也返回false, 另外部分手机如小米, 电话权限有"空白通行证"选项, 勾选获取不到SIM信息, 同样视为false
1.8 拨打电话
callModule.makingCalls(phone, secretPhone);
或
callModule.makingCalls(phone);
参数说明
成员名 | 数据类型 | 必填 | 说明 | 适用 |
---|---|---|---|---|
phone | String | 是 | 拨打的手机号 | Android |
secretPhone | String | 否 | 呼叫时通话界面显示的手机号, 可对手机号进行加密, null或""显示拨打的手机号 | Android |
1.9 指定SIM卡拨打电话
// 单卡时, 不要使用SIM拨号, 若指定的卡槽没有卡, 将使用另一张卡拨号
let simId = 1;
callModule.makingCallsWithSim(phone, secretPhone, simId);
参数说明
成员名 | 数据类型 | 必填 | 说明 | 适用 |
---|---|---|---|---|
phone | String | 是 | 拨打的手机号 | Android |
secretPhone | String | 否 | 呼叫时通话界面显示的手机号, 可对手机号进行加密, null或""显示拨打的手机号 | Android |
simId | String | 是 | SIM卡, 只能为1或2, 1:卡1拨号, 2:卡2拨号 | Android |
1.10 移除通话记录
callModule.deleteCallRecords();
// 清除通话记录, 为确保调用Api时通话记录已生成, 需要添加延时操作
setTimeout(() => {
callModule.deleteCallRecords();
}, 500);
1.11 开启所有权限
callModule.requestAllPermission();
1.12 开启录音(Android 9及以下系统可录音通话内容,Android 10及以上为普通录音)
callModule.startRecord();
1.13 关闭录音
callModule.stopRecord(callback); |
成员名 | 数据类型 | 必填 | 说明 | 适用 |
---|---|---|---|---|---|
fileName | String | 是 | 录音文件名, 与传入的录音文件路径结合使用 | Android |
// 示例
callModule.stopRecord(res => {
// 录音文件路径一定是_doc格式的, CallRecords文件夹名称可以随意更改
// this.recordPath = plus.io.convertLocalFileSystemURL("_doc/CallRecords")
// 录音文件的完整路径
let fullPath = this.recordPath + "/" + res.fileName;
// 平台觉得路径转为本地相对路径
let path = plus.io.convertAbsoluteFileSystem(fullPath);
console.log("录音文件路径: " + path);
uni.getFileInfo({
filePath: path,
success:function(){
uni.showToast({
title: "文件存在"
})
},
fail:function(){
uni.showToast({
title: "文件不存在"
})
}
})
});