uni-app 中需原生配置 url scheme:android 在 manifest.json 的 android.deeplink 中声明 scheme;ios 在 ios.urltypes 中配置并需苹果后台启用 url types;前端用 location.href 或 plus.runtime.openurl 唤起,参数通过 plus.runtime.arguments 或 uni.getlaunchoptionssync() 获取。

uni-app 中如何配置并使用 URL Scheme 唤起 App
iOS 和 Android 都支持通过自定义 URL Scheme(如 myapp://open?param=1)从外部唤起 App,但 uni-app 本身不直接处理 scheme 注册逻辑,实际唤起能力依赖原生层配置。你写在 uni.navigateTo 或 location.href 里的 scheme 不会生效——它只对原生已注册的 scheme 有效。
Android 端必须在 manifest.json 中声明 intent-filter
uni-app 的 Android 打包逻辑会读取 manifest.json 中的 android 节点,自动注入 intent-filter。漏配或格式错误会导致点击链接无响应,且无任何报错提示。
- 打开
manifest.json→ 找到"android"对象 → 添加"deepLink"字段 -
"deepLink"必须是数组,每个对象含"scheme"(字符串)和可选的"host"、"pathPrefix" - 例如想响应
myapp://page/home?id=123,至少要配:{"scheme": "myapp"} - 若配了
"host": "page",则只匹配myapp://page/xxx,myapp://home会被忽略 - 真机调试时,需用正式打包的 APK 测试;HBuilderX 自带的调试基座不识别自定义 scheme
iOS 端需在 manifest.json 中配置 URL Types 并启用 Associated Domains(可选但推荐)
iOS 对 scheme 唤起更严格,仅靠 manifest.json 配置还不够,必须同步在苹果开发者后台开启相关权限,否则 iOS 13+ 可能静默失败。
- 在
manifest.json的"ios"节点下添加"urlTypes"数组,每个对象含"urlSchemes"(字符串数组) - 例如:
{"urlSchemes": ["myapp"]} - 登录 Apple Developer,进入 App ID 设置页,勾选
URL Types并填入相同 scheme - 若希望支持 Universal Links(更可靠、可跳转网页 fallback),还需开通
Associated Domains并部署apple-app-site-association文件 - iOS 模拟器不支持 scheme 唤起,必须用真机测试
前端调用时不要用 uni.navigateTo,改用 location.href 或 plus.runtime.openURL
uni.navigateTo 是页面路由,只在 App 内部跳转,完全不走系统 URL 分发机制。真正唤起 App 的动作必须触发浏览器或系统层面的 URL 请求。
- 在 H5 环境中,用
location.href = 'myapp://open?from=h5';注意:部分 iOS Safari 在非用户手势触发下会拦截 - 在 App 环境中(即当前已是你的 App),唤起自身无意义;但若要唤起其他 App(如微信),可用
plus.runtime.openURL('weixin://') - 唤起前建议先检测目标 App 是否已安装,Android 可用
plus.runtime.isApplicationExist,iOS 无通用检测方式,只能尝试唤起后监听是否回落到 fallback 页面 - 参数尽量用 query 形式(
myapp://page?id=1&name=test),避免 path 中含特殊字符导致解析失败
最常被忽略的是:scheme 唤起成功后,App 启动时不会自动把参数传给 Vue 页面。你需要在 onLaunch 或 onShow 生命周期里通过 plus.runtime.arguments(App)或 uni.getLaunchOptionsSync()(H5 + App)手动取参并做路由分发。










