您好,欢迎访问一九零五行业门户网

uni-app在不同平台下拨打电话的示例

场景在app中拨打电话是一个比较常见的应用场景,但是我们通过搜索文章,发现,大部分的博文都是uni-app官网的copy, copy
uni-app 提供的打电话,只是帮你把拨号界面呼出来,并不能直接拨打, 安卓原生api可以,ios因为权限问题,不行
那么,我们可以做个判断,如果是安卓,点击了 直接就把电话拨出来,其他的平台,使用uni-app默认的唤起拨号界面
实现机制html5+ 提供的接口  plus.device.dial 这个sdk的使用,是需要引入包的uni-app 对外提供的接口  uni.makephonecallios和 andriod 提供原生的接口- 不熟悉原生开发,会有困难在移动端浏览器 h5页面  17a6ad0158cc005be3bcb5e93cefee42100865db79b134e9f6b82c0b36e0489ee08ed复制代码
废话不多说,直接上代码说明下面是通过 条件编译+ 各平台代码接口实现
testdevice.vue
<view> <!-- #ifdef app-plus --> <button @tap="telphone">拨打电话</button> <!-- #endif --> <!-- #ifdef h5 --> <a href="tel:10086">10086-h5平台下</a> <!-- #endif --></view><script> // 对不同的平台有一点区分 import telphone from './telphone.js' export default { methods: { telphone() { // 通过传递电话参数,调用不同平台拨打电话的功能 telphone("10086") } } }</script>复制代码
我们这里 不关注界面问题,避免分散各位看官老爷的关注点,重点看js中的实现
请注意,一定使用 条件编译,可以支持不同的场景, 上面的是 app端(ios和andriod), 下面是普通的h5
telphone.js
//#ifdef h5import vconsole from 'vconsole'new vconsole()//#endifexport default (phone) => { // 获取设备平台 let platform = uni.getsysteminfosync().platform //#ifdef h5 // h5环境--浏览器 let ua = navigator.useragent.tolowercase() // 就要判断 是微信内置浏览器还是用户的普通浏览器 if (ua.match(/micromessenger/i) == "micromessenger") { // 微信浏览器 console.log('微信浏览器') } else { // 普通浏览器 } //#endif //#ifdef app-plus // app环境 switch (platform) { case 'android': // 导入activity、intent类 var intent = plus.android.importclass("android.content.intent"); var uri = plus.android.importclass("android.net.uri"); // 获取主activity对象的实例 var main = plus.android.runtimemainactivity(); // 创建intent var uri = uri.parse("tel:" + phone); // 这里可修改电话号码 var call = new intent("android.intent.action.call", uri); // 调用startactivity方法拨打电话 main.startactivity(call); break; case 'ios': // 使用uni-app提供的借口 uni.makephonecall({ phonenumber: phone }) break; default: // 调试器工具 } //#endif}复制代码
注意事项条件编译, 我们在使用  vconsole 的时候,如果不使用条件编译,在app端是会报错的一定不能将import语句 写在if判断或者 三目运算中, 会报错, 要理解es6模块加载的机制通过uni-app提供的接口,判断是app平台(ios或者andriod) ,怎么区分普通浏览器和微信浏览器还是依赖条件编译上述的无论是uni-app提供的api实现还是,andriod的 sdk 都是跳出 app拨打电话,挂断以后,还是会调回app界面plus.device.dial 需要引入对应的sdk, 这个其实有是要通过 条件编译,判断当前所处的环境,上面的已经够用,其实和引入 vconsole 是一样的道理
了解其他文章敬请访问uni-app栏目!
以上就是uni-app在不同平台下拨打电话的示例的详细内容。
其它类似信息

推荐信息