更新记录
1.1.1(2026-09-07) 下载此版本
修改语法问题
1.1.0(2026-09-07) 下载此版本
openScheme更名为openDeepLink(接口类型同步更名)。- 新增 Android 平台:
Intent.ACTION_VIEW+resolveActivity预判 +UTSAndroid上下文startActivity。 - 新增 iOS 平台:
OpenDeepLinkBridge.swift(UIApplication.canOpenURL/open)桥接。 - 新增 H5 平台:
window.location尽力跳转 + 2 秒延时兜底。 - 统一错误码 1001 / 1002 / 1003,失败不抛未捕获异常。
平台兼容性
uni-app(4.87)
| Vue2 | Vue3 | Chrome | Safari | app-vue | app-nvue | Android | iOS | 鸿蒙 |
|---|---|---|---|---|---|---|---|---|
| √ | √ | √ | √ | √ | √ | √ | √ | √ |
| 微信小程序 | 支付宝小程序 | 抖音小程序 | 百度小程序 | 快手小程序 | 京东小程序 | 鸿蒙元服务 | QQ小程序 | 飞书小程序 | 小红书小程序 | 快应用-华为 | 快应用-联盟 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| × | × | × | × | × | × | × | × | × | × | × | × |
uni-app x(5.0)
| Chrome | Safari | Android | iOS | 鸿蒙 | 微信小程序 |
|---|---|---|---|---|---|
| × | × | × | × | × | × |
ux-toolkit
UX Toolkit:跨端工具 UTS 插件。提供 openDeepLink,用于通过 URL Scheme / DeepLink 拉起其他 App,覆盖鸿蒙 / Android / iOS / H5 四个环境,支持无应用可处理时的 http(s) 网页兜底。
平台支持
| 平台 | 支持 | 说明 |
|---|---|---|
| App-HarmonyOS | √ | bundleManager.canOpenLink 预判 + startAbility 隐式拉起 |
| Android | √ | Intent.ACTION_VIEW + resolveActivity 预判 + startActivity |
| iOS | √ | UIApplication.canOpenURL 预判 + open 拉起 |
| H5 | √ | window.location 尽力跳转 + 延时兜底(结果无法 100% 精确判定) |
| 小程序(mp-weixin 等) | × | UTS 插件不支持小程序平台,请由业务按下方示例提示不支持 |
快速使用
import { openDeepLink } from '@/uni_modules/ux-toolkit'
// 拉起微信
openDeepLink({ uri: 'weixin://' })
.then((res) => {
// res.errCode === 0,已拉起(res.openedByFallback 表示是否经由网页兜底)
console.log('openDeepLink ok', res.errCode, res.openedByFallback)
})
.catch((err) => {
// err 为 { errCode, errMsg, openedByFallback }
console.log('openDeepLink fail', err.errCode, err.errMsg)
})
// 拉起电商 App,未安装/不支持时用网页兜底
openDeepLink({
uri: 'openapp.jdmobile://virtual?params=...',
fallbackUrl: 'https://u.jd.com/xxxx'
}).catch((err) => {
console.log(err.errCode, err.errMsg)
})
小程序环境调用示例
小程序没有 UTS 通道,调用方应自行处理"提示不支持"。建议在页面用条件编译包裹:
// #ifdef MP-WEIXIN
uni.showToast({ title: '当前环境不支持跳转外部 App', icon: 'none' })
// #endif
(openDeepLink 的 import 语句同样建议放在 #ifdef APP-PLUS || APP-HARMONY || H5 条件编译内,避免小程序构建解析 UTS 模块。)
API
openDeepLink(options: OpenDeepLinkOptions): Promise<OpenDeepLinkResult>
| 字段 | 类型 | 说明 |
|---|---|---|
options.uri |
string |
必填。完整 scheme/deeplink 链接,如 weixin://、openapp.jdmobile://virtual?params=... |
options.fallbackUrl |
string |
可选。无应用可处理该 scheme 时使用的 http(s) 网页兜底地址 |
成功 resolve、失败 reject OpenDeepLinkResult(字段一致,仅 errCode 区分):
| errCode | 含义 |
|---|---|
| 0 | 已成功拉起(openedByFallback 表示是否经由网页兜底) |
| 1001 | 无应用可处理该 scheme,且未提供 fallbackUrl(提示未安装/不支持) |
| 1002 | 拉起调用失败(startActivity / startAbility / openURL 异常) |
| 1003 | 参数错误(uri 为空) |
类型定义见插件内 utssdk/interface.uts。
宿主配置要求
鸿蒙
调用方需在 harmony-configs/entry/src/main/module.json5 的 module.querySchemes 声明用到的 scheme(https 用于网页兜底,建议常驻),否则 canOpenLink / 隐式 startAbility 会被拦截:
{
"module": {
// ... 其他配置
"querySchemes": [
"https",
"weixin"
// 其余业务 scheme 按需追加
]
}
}
iOS
canOpenURL 预判仅对宿主 Info.plist 的 LSApplicationQueriesSchemes 白名单内 scheme 可靠。业务 scheme 需在 manifest.json 的 iOS 配置(urlschemewhitelist / LSApplicationQueriesSchemes)中声明;未声明的 scheme 会被视为"不支持"并走 fallbackUrl / 1001。
Android
resolveActivity 预判受 Android 11+(API 30+)包可见性影响可能不精确;插件已做异常兜底(try-startActivity),不会崩溃。如需精确可见性,宿主需在 AndroidManifest 增加 <queries> 声明(本项目以 HBuilderX 打包,如需要请另立需求处理)。
平台行为差异
- H5:浏览器无法可靠获知 scheme 是否被系统/外部 App 接住。插件采用尽力策略:先跳
uri,监听visibilitychange,若 2 秒内页面未被切走(scheme 未被接管)且有fallbackUrl则改跳兜底网页,否则 reject 1001。调用方不应把 H5 返回值当精确结果。 - 能否拉起取决于目标 App 是否注册了对应 scheme:
tbopen://、openapp.jdmobile://等 Android/iOS 常见 scheme 在鸿蒙端需逐个真机验证。 - 鸿蒙
getContext()自 API 18 起被官方标记废弃,若真机运行发现无法取得UIAbilityContext,需改用宿主 WindowStage 注入上下文方案。

收藏人数:
下载插件并导入HBuilderX
赞赏(0)
下载 5
赞赏 0
下载 12568651
赞赏 1949
赞赏
京公网安备:11010802035340号