Android用intent://需声明intent-filter并带package参数,Chrome等浏览器要求用户手势触发;iOS应优先用Universal Links,custom scheme在Safari中基本失效;微信/QQ内置浏览器禁用第三方唤端。

Android上用intent://协议唤起APP
安卓设备可以通过 intent:// URL Scheme 触发原生应用,前提是目标APP在AndroidManifest.xml中声明了可被外部调用的 ,且包含 android:scheme 和 android:host(或支持 BROWSABLE)。
常见错误是直接写 intent://... 却没加 package 或 scheme 参数,导致页面白屏或跳转失败。浏览器(尤其Chrome 77+)还会拦截无用户手势触发的唤端行为——必须由点击、触摸等事件驱动。
- 唤起微信:
@#@#@#@#@#@#@#@#@#@0(需微信已安装且支持该scheme) - 更通用写法(带fallback):
javascript document.getElementById('openApp').onclick = () => { const intentUrl = 'intent://scan/#Intent;scheme=weixin;package=com.tencent.mm;S.browser_fallback_url=https%3A%2F%2Fexample.com%2Ffail;end'; window.location.href = intentUrl; }; - 注意
package必须与APK的applicationId完全一致;browser_fallback_url要URL编码
iOS上用universal links或custom scheme
iOS 9+ 限制了 location.href 直接跳转 custom scheme(如 myapp://),会弹出“无法打开页面”提示且无回调。真正可靠的方式是配置 Universal Links:服务器提供 apple-app-site-association 文件,APP在Xcode中开启Associated Domains,并签名匹配。
如果只做简单兼容,可尝试双写方案,但成功率低:
- 先用
iframe.src尝试唤端(iOS Safari对iframe唤端更宽容) - 1.5秒后检查页面是否还在前台(用
document.hidden或定时器),若未跳转则跳转fallback页 - custom scheme示例:
@#@#@#@#@#@#@#@#@#@1,但Safari下大概率失效
唤起失败时如何判断和降级
HTML本身没有标准API监听唤端是否成功,只能靠间接信号。关键是别依赖“跳转成功”的假定,所有唤端逻辑都应自带 fallback 路径。
将 Markdown 文章转换为微信公众号兼容的纯 HTML 格式。当用户要求"转成微信格式"、"生成公众号文章 HTML"、"排版到微信草稿箱"、"微信粘贴格式"时触发。输出带内联样式的纯 HTML,微信编辑器可直接渲染,无需额外适配。支持标题、段落、列表、粗体、行内代码、表格、引用块、代码块、配图的完整转换。
常见误判是把“页面卸载”等同于“唤端成功”——其实也可能是用户切走、崩溃或网络中断。稳妥做法是:
- 唤端前记录
performance.now()时间戳 - 监听
pagehide或visibilitychange,若2秒内触发且document.hidden === true,视为可能成功 - 否则跳转H5页面或提示“请手动打开APP”,并给出下载链接(检测是否已安装可用
navigator.userAgent+localStorage缓存历史行为) - 避免用
setTimeout简单跳转fallback——某些安卓浏览器会同时打开两个页面
微信和QQ内置浏览器的特殊限制
微信iOS客户端完全屏蔽了所有第三方 custom scheme 和 intent 唤端(包括淘宝、京东等),只允许唤起自身生态内服务(如小程序)。Android微信虽开放部分scheme(如支付宝alipayqr://),但策略随时变动,且不返回任何状态。
QQ内置浏览器同样禁用大部分唤端能力,仅对自家产品(如QQ音乐)保留支持。这意味着:
- 在
UA中检测到MicroMessenger或MQQBrowser,应直接放弃唤端,展示引导语 + APP下载二维码 - 不要试图用JSBridge(如
WeixinJSBridge)绕过——它早已废弃且不跨平台 - 企业微信、飞书等办公类容器有独立唤端规则,需单独适配其文档中的
lark://或feishu://scheme
实际落地时,最不可靠的是“写个href点一下就完事”。每个环节——scheme注册、intent参数拼写、浏览器版本、系统权限、APP安装状态——都可能断链。务必在真机多环境测试,尤其是微信/QQ/Edge/Chrome/Safari的组合。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!










