下面是通過 條件編譯 各平臺代碼接口實(shí)現(xiàn)
testDevice.vue
<view>
<!-- #ifdef APP-PLUS -->
<button @tap="telphone">撥打電話</button>
<!-- #endif -->
<!-- #ifdef H5 -->
<a href="tel:10086">10086-h5平臺下</a>
<!-- #endif -->
</view>
<script>
// 對不同的平臺有一點(diǎn)區(qū)分
import telphone from './telphone.js'
export default {
methods: {
telphone() {
// 通過傳遞電話參數(shù),調(diào)用不同平臺撥打電話的功能
telphone("10086")
}
}
}
</script>復(fù)制代碼
我們這里 不關(guān)注界面問題,避免分散各位看官老爺?shù)年P(guān)注點(diǎn),重點(diǎn)看js中的實(shí)現(xiàn)
請注意,一定使用 條件編譯,可以支持不同的場景, 上面的是 App端(IOS和Andriod), 下面是普通的h5
telphone.js
//#ifdef H5
import VConsole from 'vconsole'
new VConsole()
//#endif
export default (phone) => {
// 獲取設(shè)備平臺
let platform = uni.getSystemInfoSync().platform
//#ifdef H5
// h5環(huán)境--瀏覽器
let ua = navigator.userAgent.toLowerCase()
// 就要判斷 是微信內(nèi)置瀏覽器還是用戶的普通瀏覽器
if (ua.match(/MicroMessenger/i) == "micromessenger") {
// 微信瀏覽器
console.log('微信瀏覽器')
} else {
// 普通瀏覽器
}
//#endif
//#ifdef APP-PLUS
// app環(huán)境
switch (platform) {
case 'android':
// 導(dǎo)入Activity、Intent類
var Intent = plus.android.importClass("android.content.Intent");
var Uri = plus.android.importClass("android.net.Uri");
// 獲取主Activity對象的實(shí)例
var main = plus.android.runtimeMainActivity();
// 創(chuàng)建Intent
var uri = Uri.parse("tel:" phone); // 這里可修改電話號碼
var call = new Intent("android.intent.action.CALL", uri);
// 調(diào)用startActivity方法撥打電話
main.startActivity(call);
break;
case 'ios':
// 使用uni-app提供的借口
uni.makePhoneCall({
phoneNumber: phone
})
break;
default:
// 調(diào)試器工具
}
//#endif
}復(fù)制代碼
注意事項條件編譯, 我們在使用 VConsole 的時候,如果不使用條件編譯,在App端是會報錯的一定不能將import語句 寫在if判斷或者 三目運(yùn)算中, 會報錯, 要理解ES6模塊加載的機(jī)制通過uni-app提供的接口,判斷是App平臺(IOS或者Andriod) ,怎么區(qū)分普通瀏覽器和微信瀏覽器還是依賴條件編譯上述的無論是uni-app提供的API實(shí)現(xiàn)還是,Andriod的 SDK 都是跳出 App撥打電話,掛斷以后,還是會調(diào)回App界面
plus.device.dial 需要引入對應(yīng)的SDK, 這個其實(shí)有是要通過 條件編譯,判斷當(dāng)前所處的環(huán)境,上面的已經(jīng)夠用,其實(shí)和引入 vconsole 是一樣的道理
了解其他文章敬請訪問uni-app欄目!
更多關(guān)于云服務(wù)器,域名注冊,虛擬主機(jī)的問題,請訪問西部數(shù)碼官網(wǎng):m.ps-sw.cn