更新记录
1.0.2(2026-11-03)
- 更新示例工程。
1.0.1(2026-11-03)
- 更新文档。
1.0.0(2026-11-03)
- 支持 Android、iOS、HarmonyOS 通过 URL Scheme 打开外部应用。
- 支持 Android 包名启动、指定应用打开链接。
- 支持应用可用性检查和打开结果回调。
- 示例页增加打开方式提示、包名启动示例。
平台兼容性
uni-app(5.24)
| Vue2 | Vue3 | Chrome | Safari | app-vue | app-nvue | Android | iOS | 鸿蒙 |
|---|---|---|---|---|---|---|---|---|
| √ | √ | × | × | √ | √ | √ | √ | √ |
| 微信小程序 | 支付宝小程序 | 抖音小程序 | 百度小程序 | 快手小程序 | 京东小程序 | 鸿蒙元服务 | QQ小程序 | 飞书小程序 | 小红书小程序 | 快应用-华为 | 快应用-联盟 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| × | × | × | × | × | × | × | × | × | × | × | × |
uni-app x(5.24)
| Chrome | Safari | Android | iOS | 鸿蒙 | 微信小程序 |
|---|---|---|---|---|---|
| - | - | √ | √ | √ | - |
其他
| 多语言 | 暗黑模式 | 宽屏模式 | 蒸汽模式 |
|---|---|---|---|
| × | × | × | √ |
umi-open-schema
跨平台 UTS 插件:通过 URL Scheme、DeepLink 或 Universal/App Link 打开外部 App、浏览器、地图和应用商店。
使用
import { openSchema, canOpenURL, canOpenSchema } from '@/uni_modules/umi-open-schema'
openSchema({
// 参数直接写入 URL,按目标 App 的协议编码
url: 'https://maps.google.com/?q=31.23,121.47',
// 仅 Android 使用,其他平台忽略此参数
packageName: 'com.google.android.apps.maps',
success: (res) => console.log(`opened: ${res.opened}`),
fail: (err) => console.error(`${err.errCode}: ${err.errMsg}`)
})
// 自定义 Scheme 可先判断是否有目标应用处理;https App Linking 无需判断,直接打开。
if (canOpenURL('weixin://')) {
openSchema({ url: 'weixin://dl/business/?ticket=your-ticket' })
}
Android 仅通过包名启动
// 无需传 url,启动目标应用的默认入口。
openSchema({
packageName: 'com.tencent.mm',
success: (res) => console.log(res.opened),
fail: (err) => console.error(err.errMsg)
})
// 检查与打开使用相同参数;同时支持 URL 和包名。
const available = canOpenSchema({ packageName: 'com.tencent.mm' })
const handlesLink = canOpenSchema({ url: 'weixin://', packageName: 'com.tencent.mm' })
| 参数 | Android 行为 |
|---|---|
只传 url |
由系统匹配应用打开链接 |
只传 packageName |
启动应用默认入口 |
| 两者都传 | 使用指定应用打开链接 |
| 两者为空或仅空白字符 | 返回 9010001 |
url 现在可省略,参数会先去除首尾空白。仅包名启动成功时,返回结果中的 url 为空字符串。iOS、HarmonyOS 暂不支持仅包名启动,此时返回 9010004;有 URL 时仍通过链接打开,忽略包名。canOpenURL(url) 保留兼容,canOpenSchema(options) 可检查完整参数;检查失败返回 false。
Android 应用可见性
Android 11 及以上查询目标应用时受应用可见性限制。插件的 utssdk/app-android/AndroidManifest.xml 已声明示例微信包名和 HTTPS 查询;接入其他应用时,在 <queries> 中补充具体包名:
<package android:name="com.example.target" />
不要把 <package> 放在 <application> 内。修改原生配置后需重新构建。包名启动使用 getLaunchIntentForPackage,目标应用未安装、不可见或没有可启动入口时会失败。检查结果是查询时的状态,不能保证随后启动一定成功;始终处理 fail 回调。
参考:Android 应用可见性声明。
iOS 应用访问白名单
将目标应用的 Scheme 加入宿主应用的 LSApplicationQueriesSchemes 白名单,只填写协议名,不带 ://。
- uni-app x:在
manifest.json的“iOS App配置 → 应用访问白名单”中添加(HBuilderX 4.71 及以上支持);旧版本在项目的Info.plist中配置。 - uni-app:在
manifest.json的app-plus.distribute.ios下配置"urlschemewhitelist": "weixin,alipays"。 - 原生工程:在宿主
Info.plist的<dict>内添加:
<key>LSApplicationQueriesSchemes</key>
<array>
<string>weixin</string>
<string>alipays</string>
</array>
本插件在 iOS 打开前也会检查 URL;自定义 Scheme 未加入白名单时,检查返回 false,打开返回 9010003。配置后需重新打包,真机调试请使用重新制作的自定义基座。
参考:uni-app x iOS 配置、uni-app 应用访问白名单。
HarmonyOS 查询 Scheme 配置
在宿主鸿蒙工程的 entry/src/main/module.json5 中,将目标协议加入 module.querySchemes,只填写协议名,不带 ://,最多 50 个。
HBuilderX 项目先运行一次鸿蒙端,将生成的 unpackage/dist/dev/app-harmony/entry/src/main/module.json5 完整复制到项目根目录的 harmony-configs/entry/src/main/module.json5,再在现有 module 节点中补充:
{
"module": {
// 保留原有配置,在此添加或合并目标 Scheme
"querySchemes": ["weixin", "alipays"]
}
}
以上仅为配置片段,覆盖文件必须保留完整内容。协议名以目标应用的鸿蒙接入文档为准。修改后重新运行或打包,并检查最终产物中的配置。
canOpenURL / canOpenSchema 通过 canOpenLink 查询,未声明目标 Scheme 时可能返回 false;openSchema 通过 openLink 打开,目标应用需支持对应的 Deep Link / App Linking。packageName 在鸿蒙端不参与匹配。
参考:鸿蒙应用唤起配置。
url 支持 https://、自定义 scheme(如 weixin://、alipays://)、地图 URI 以及应用商店链接。调用方负责按目标应用协议对 query 参数进行 URL 编码。packageName 可在 Android 上限定目标包名;鸿蒙上使用 URI 对应的 Deep Link / App Linking 规则决定目标应用。未安装目标应用或系统没有匹配处理者时,会通过 fail 返回 9010003。

收藏人数:
购买源码授权版(
试用
使用 HBuilder 导入示例项目
赞赏(0)
下载 1504
赞赏 4
下载 12735827
赞赏 1959
赞赏
京公网安备:11010802035340号