【uniapp】在UniApp中检测手机是否安装了某个应用

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端无法直接检测应用是否安装,只能通过尝试跳转的方式间接判断

建议根据实际需求选择合适的方法,并处理好各平台的兼容性问题。

相关推荐
Rysxt_1 天前
UniApp五大UI框架与uni-ui核心区别对比
uni-app·uni-ui
2501_915918411 天前
HTTPS 代理失效,启用双向认证(mTLS)的 iOS 应用网络怎么抓包调试
android·网络·ios·小程序·https·uni-app·iphone
2501_915106321 天前
混合应用(Hybrid)安全加固,不依赖源码对成品 IPA 混淆
android·安全·小程序·https·uni-app·iphone·webview
00后程序员张1 天前
无需越狱,来对 iOS 设备进行调试、管理与分析
android·ios·小程序·https·uni-app·iphone·webview
芒果大胖砸1 天前
uniapp当中如何实现长按复制功能并且能够自由选择内容
开发语言·javascript·uni-app
00后程序员张1 天前
在 iOS 上架中如何批量方便快捷管理 Bundle ID
android·ios·小程序·https·uni-app·iphone·webview
换日线°1 天前
uni-app对接腾讯即时通讯 IM
前端·uni-app
咚咚?1 天前
uniapp [JS Framework] 当前运行的基座不包含原生插件[xxxx],请在manifest中配置该插件,重新制作包括该原生插件的自定义运行基座
开发语言·javascript·uni-app
木子啊1 天前
Uni-app生命周期:执行顺序与避坑指南
前端·javascript·uni-app
快起来搬砖了1 天前
UniApp 全端兼容 OSS 视频上传实现方案
小程序·uni-app·app·h5·文件上传·oss文件上传