1. 使用plus.runtime.isApplicationExist(仅限App端)
javascript
// 判断应用是否安装
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 Scheme
action: '' // iOS可选
}, (exist) => {
resolve(exist)
})
})
}
}
return Promise.resolve(false)
}
// 使用示例
checkAppInstalled('com.tencent.mm') // 检测微信是否安装
.then(installed => {
console.log('应用是否安装:', installed)
})
2. 使用URL Scheme尝试唤醒应用(跨平台)
javascript
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(检测微信小程序)
javascript
uni.navigateToMiniProgram({
appId: '目标小程序appid',
success(res) {
// 可以打开,说明已安装
console.log('小程序已安装')
},
fail(err) {
// 打开失败,可能未安装
console.log('小程序未安装或打开失败', err)
}
})
注意事项
平台限制:
-
Android需要知道目标应用的包名
-
iOS需要知道目标应用的URL Scheme
隐私政策:
- 在iOS上,苹果对应用检测有严格限制,可能需要用户交互才能检测
上架审核:
- 使用这些方法可能会影响应用商店审核,特别是如果检测后引导用户去下载
H5端限制:
- 在H5端无法直接检测应用是否安装,只能通过尝试跳转的方式间接判断
建议根据实际需求选择合适的方法,并处理好各平台的兼容性问题。