在 UniApp 中,可以通过 URL Scheme 或 Universal Link(iOS)打开第三方应用。以下是具体方法和示例代码:
方法一:使用 uni.navigateToMiniProgram(适用于微信小程序跳转其他小程序或部分应用)
如果目标应用支持微信小程序跳转,可使用此方法:
uni.navigateToMiniProgram({
appId: '目标小程序AppID', // 替换为第三方应用的AppID
path: '页面路径', // 可选,指定跳转页面
success: () => console.log('跳转成功'),
fail: (err) => console.log('跳转失败', err)
});
方法二:使用 plus.runtime.launchApplication(App端通用)
通过 URL Scheme 直接启动第三方应用(需在 manifest.json 配置白名单):
// #ifdef APP-PLUS
plus.runtime.launchApplication(
{
action: '目标应用的URL Scheme(如:weixin://)'
},
(e) => {
console.log('打开成功');
},
(err) => {
console.log('打开失败:', err);
uni.showToast({ title: '未安装应用', icon: 'none' });
}
);
// #endif
方法三:使用 uni.openScheme(H5或App端)
直接通过 URL 打开应用或网页:
// 尝试打开第三方应用,失败则跳转下载页
uni.openScheme({
url: 'URL Scheme 或下载链接',
fail: () => {
uni.showModal({ content: '是否下载应用?', success: (res) => {
if (res.confirm) window.open('应用商店链接');
}});
}
});
注意事项:
- URL Scheme 获取:需查询目标应用的官方文档(如微信:
weixin://,支付宝:alipay://)。
- 平台差异:iOS 和 Android 的 Scheme 可能不同,需分别测试。
- 权限配置:在 App 端需在
manifest.json 的 plus->distribute->plugins 中配置协议白名单。
- 兼容性:部分应用可能限制被第三方调用。
示例:打开微信
// #ifdef APP-PLUS
plus.runtime.launchApplication(
{ action: 'weixin://' },
() => {},
() => uni.showToast({ title: '未安装微信', icon: 'none' })
);
// #endif
建议先检测应用是否安装(通过尝试打开并捕获失败回调),以提升用户体验。