uni-app uni.makePhoneCall 报Bug

发布于 1周前 作者 phonegap100 来自 Uni-App

uni-app uni.makePhoneCall 报Bug

产品分类

uniapp/App

开发环境、版本号、项目创建方式

项⽬目信息 详情
PC开发环境操作系统 Windows
PC开发环境操作系统版本号 win10
HBuilderX类型 正式
HBuilderX版本号 4.45
手机系统 Android
手机系统版本号 Android 15
手机厂商 华为
手机机型 HONOR-CHL-AN00
页面类型 vue
vue版本 vue3
打包方式 云端
项目创建方式 HBuilderX

示例代码

const call = () => {
  console.log("拨号", phone.value);
  uni.makePhoneCall({
    phoneNumber: '114', // 仅为示例
    success: function (e) {
      console.log("成功", e);
    },
    fail: function (e) {
      console.log("失败", e);
    }
  });
}

操作步骤

const call = () => {
  console.log("拨号", phone.value);
  uni.makePhoneCall({
    phoneNumber: '114', // 仅为示例
    success: function (e) {
      console.log("成功", e);
    },
    fail: function (e) {
      console.log("失败", e);
    }
  });
}

预期结果

应该转到拨号面板或者拨打电话

实际结果

提示成功,但是没有转到拨号面板也没有拨号成功

bug描述

【报Bug】uni.makePhoneCall
都是成功的提示,也没有转到拨号面板也没有拨号成功


2 回复

看代码很基础,阅读文档 https://uniapp.dcloud.net.cn/api/system/phone.html 确认权限。开发阶段、标准基座是否正常?你同事是否正常,测试了哪些设备


针对您提到的 uni-appuni.makePhoneCall 方法报 Bug 的问题,这里提供一个基本的代码示例以及可能遇到的错误处理机制,帮助您更好地理解和排查问题。

基本使用示例

uni.makePhoneCall 方法用于拨打电话,其基本使用方式如下:

// 在页面或组件的方法中调用
methods: {
    makeCall() {
        uni.makePhoneCall({
            phoneNumber: '12345678901', // 请替换为实际的电话号码
            success: function () {
                console.log('拨打电话成功');
            },
            fail: function (err) {
                console.error('拨打电话失败', err);
            },
            complete: function () {
                console.log('拨打电话完成,无论成功或失败都会执行');
            }
        });
    }
}

在模板中,您可以绑定一个按钮来触发这个方法:

<button @click="makeCall">拨打电话</button>

错误处理与排查

  1. 检查电话号码格式: 确保传入的 phoneNumber 是正确的手机号码格式,通常为中国大陆手机号为11位数字。

  2. 权限问题: 在部分平台上(如小程序),拨打电话功能可能需要用户授权。如果用户未授权,调用将失败。可以在小程序设置中检查相关权限。

  3. 平台差异: 不同平台(如 App、H5、小程序)对拨打电话功能的支持可能有所不同。确保在目标平台上测试功能。

  4. 错误回调: 利用 fail 回调获取详细的错误信息,有助于定位问题。例如:

fail: function (err) {
    console.error('拨打电话失败,错误信息:', err.errMsg);
    // 根据具体的错误信息做进一步处理
    if (err.errMsg === 'makePhoneCall:fail permission denied') {
        uni.showToast({
            title: '请先授权拨打电话',
            icon: 'none'
        });
    }
}
  1. 调试日志: 使用开发者工具的控制台输出调试信息,观察调用前后的状态变化。

注意

  • 确保在真实环境中测试拨打电话功能,因为模拟器可能不支持该功能。
  • 遵循各平台的规则和政策,不要在未获得用户明确同意的情况下调用拨打电话功能。

通过上述代码示例和错误处理机制,您应该能够更有效地排查和解决 uni.makePhoneCall 方法报 Bug 的问题。如果问题依旧存在,请检查 uni-app 的官方文档或社区,看是否有已知问题或更新。

回到顶部