場景
在App中撥打電話是一個比較常見的應用程式場景,但我們透過搜尋文章,發現,大部分的博文都是uni-app官網的copy,copy
uni-app 提供的打電話,只是幫你把撥號界面呼出來,並不能直接撥打, 安卓原生API可以,IOS因為權限問題,不行
那麼,我們可以做個判斷,如果是安卓,點擊了直接就把電話撥出來,其他的平台,使用uni-app預設的喚起撥號介面
實作機制
- # HTML5 提供的介面 plus.device.dial 這個SDK的使用,是需要引入套件的
- uni-app 對外提供的介面 uni.makePhoneCall
- #IOS和Andriod 提供原生的介面- 不熟悉原生開發,會有困難
- 在行動裝置瀏覽器H5頁面
<a>10086</a>复制代码
#廢話不多說,直接上程式碼說明 以下是透過條件編譯各平台程式碼介面實作
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 H5 import VConsole from 'vconsole' new VConsole() //#endif export 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在不同平台下撥打電話的範例的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本文討論了有關移動和網絡平台的調試策略,突出顯示了Android Studio,Xcode和Chrome DevTools等工具,以及在OS和性能優化的一致結果的技術。

文章討論了用於Uniapp開發的調試工具和最佳實踐,重點關注Hbuilderx,微信開發人員工具和Chrome DevTools等工具。

本文討論了跨多個平台的Uniapp應用程序的端到端測試。它涵蓋定義測試方案,選擇諸如Appium和Cypress之類的工具,設置環境,寫作和運行測試,分析結果以及集成

本文討論了針對Uniapp應用程序的各種測試類型,包括單元,集成,功能,UI/UX,性能,跨平台和安全測試。它還涵蓋了確保跨平台兼容性,並推薦Jes等工具

本文討論了UNIAPP開發中的共同績效抗模式,例如過度的全球數據使用和效率低下的數據綁定,並提供策略來識別和減輕這些問題,以提高應用程序性能。

本文討論了通過壓縮,響應式設計,懶惰加載,緩存和使用WebP格式來優化Uniapp中的圖像,以更好地進行Web性能。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

SAP NetWeaver Server Adapter for Eclipse
將Eclipse與SAP NetWeaver應用伺服器整合。

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器

SublimeText3 英文版
推薦:為Win版本,支援程式碼提示!

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境