1. 使用plus.runtime.isApplicationExist(僅限App端)
// 判斷應用是否安裝
function checkAppInstalled(packageName) {if (uni.getSystemInfoSync().platform === 'android' || uni.getSystemInfoSync().platform === 'ios') {// 僅App端可用if (typeof plus !== 'undefined') {return new Promise((resolve, reject) => {plus.runtime.isApplicationExist({pname: packageName, // Android包名或iOS的URL Schemeaction: '' // iOS可選}, (exist) => {resolve(exist)})})}}return Promise.resolve(false)
}// 使用示例
checkAppInstalled('com.tencent.mm') // 檢測微信是否安裝.then(installed => {console.log('應用是否安裝:', installed)})
2. 使用URL Scheme嘗試喚醒應用(跨平臺)
function checkAppByScheme(scheme) {return new Promise((resolve) => {// 嘗試打開應用window.location.href = scheme// 設置超時檢測setTimeout(() => {// 如果還在當前頁面,則認為應用未安裝if (document.hidden || document.webkitHidden) {resolve(true)} else {resolve(false)}}, 2000)})
}// 使用示例(需要真實URL Scheme)
checkAppByScheme('weixin://').then(installed => {console.log('應用是否安裝:', installed)})
3. 使用uni.navigateToMiniProgram(檢測微信小程序)
uni.navigateToMiniProgram({appId: '目標小程序appid',success(res) {// 可以打開,說明已安裝console.log('小程序已安裝')},fail(err) {// 打開失敗,可能未安裝console.log('小程序未安裝或打開失敗', err)}
})
注意事項
-
平臺限制:
-
Android需要知道目標應用的包名
-
iOS需要知道目標應用的URL Scheme
-
-
隱私政策:
-
在iOS上,蘋果對應用檢測有嚴格限制,可能需要用戶交互才能檢測
-
-
上架審核:
-
使用這些方法可能會影響應用商店審核,特別是如果檢測后引導用戶去下載
-
-
H5端限制:
-
在H5端無法直接檢測應用是否安裝,只能通過嘗試跳轉的方式間接判斷
-
建議根據實際需求選擇合適的方法,并處理好各平臺的兼容性問題。