uniapp如何唤起app或跳转至指定应用
在uniapp开发中,如何实现唤起其他APP的功能?比如需要从自己的应用跳转到微信、支付宝等指定应用,或者判断用户是否安装了目标应用。请问具体应该调用哪些API?iOS和Android的实现方式是否有差异?能否提供完整的代码示例和注意事项?
2 回复
uniapp可通过scheme协议唤起其他App。常用方法:
- 使用plus.runtime.launchApplication()直接启动
- 使用location.href跳转URL Scheme
- 使用uni.navigateToMiniProgram跳转小程序
需要目标App提供有效的scheme地址,如:weixin://。注意部分平台需配置白名单。
在 UniApp 中,唤起其他应用或跳转到指定应用主要通过 URL Scheme 或 Universal Link(iOS) 实现。以下是具体方法和代码示例:
1. 使用 URL Scheme 唤起应用
URL Scheme 是一种协议,允许应用通过特定链接被唤起。例如,微信的 Scheme 是 weixin://。
实现步骤:
-
获取目标应用的 Scheme
需要知道目标应用的 URL Scheme(如微信:weixin://,支付宝:alipay://)。部分应用的 Scheme 可查询官方文档。 -
在 UniApp 中调用 Scheme
使用uni.navigateTo、uni.redirectTo或plus.runtime.launchApplication(需 5+ App 环境)。
代码示例:
// 方法1:使用 uni.navigateTo(适用于已知 Scheme)
uni.navigateTo({
url: 'weixin://', // 替换为目标应用的 Scheme
fail: (err) => {
console.log('唤起失败,可能未安装应用', err);
// 可跳转到下载页或提示用户
uni.showToast({ title: '未安装应用', icon: 'none' });
}
});
// 方法2:使用 5+ API(需在 App 端运行)
if (plus.runtime.isApplicationExist({ pname: 'com.tencent.mm' })) { // 检查应用是否安装
plus.runtime.launchApplication({ action: 'weixin://' }, (e) => {
console.log('唤起成功');
});
} else {
uni.showToast({ title: '未安装微信', icon: 'none' });
}
2. 跳转到应用商店
如果未安装应用,可引导用户跳转到应用商店下载。
代码示例:
// 跳转到 App Store(iOS)或应用市场(Android)
const openStore = () => {
// iOS 跳转到 App Store
if (uni.getSystemInfoSync().platform === 'ios') {
plus.runtime.openURL('https://apps.apple.com/cn/app/微信/id414478124'); // 替换为应用商店链接
}
// Android 跳转到应用市场
else {
plus.runtime.openURL('market://details?id=com.tencent.mm'); // 使用 market Scheme
}
};
3. 使用 Universal Link(iOS)
Universal Link 是 iOS 提供的深层链接,可直接跳转到应用特定页面(需配置关联域名)。
代码示例:
// 直接打开 Universal Link
uni.navigateTo({
url: 'https://example.com/app-path', // 替换为配置的 Universal Link
});
注意事项:
- 权限问题:部分 Android 设备需手动授权“打开其他应用”的权限。
- Scheme 限制:iOS 9 以上需在
info.plist中配置LSApplicationQueriesSchemes白名单。 - 兼容性:测试不同设备和系统版本,确保 Scheme 有效。
通过以上方法,即可在 UniApp 中实现唤起其他应用或跳转功能。

