60 秒回答模板

URL Scheme 是 App 注册的自定义协议,例如 myapp://detail?id=1,系统看到这个协议后尝试交给对应 App 处理。它接入简单、覆盖老系统和 App 间跳转场景,但协议名可能冲突,浏览器限制多,未安装 App 时体验不稳定,也难可靠判断是否拉起成功。Universal Links 是 iOS 的 HTTPS 深链,App 和域名通过 apple-app-site-association 建立关联;已安装 App 时系统可直接打开 App,未安装时自然落到网页,安全性和用户体验更好。实际方案通常用 Universal Links 作为主链路,Scheme 作为兼容兜底,再配合 H5 降级页、应用商店跳转、参数签名和归因统计。

考点 移动端 Deep Link
难度 前端增长长尾题
回答目标 比较触发、降级和安全性

深入解析

01

先定义两类深链

Scheme 使用自定义协议拉起 App,入口长得像 myapp://path。Universal Links 使用普通 HTTPS 链接,系统通过域名和 App 的关联关系决定是否打开 App。

02

Scheme 的优势和风险

Scheme 简单直接,适合 App 间调用和兼容旧系统。但协议名不是基于域名所有权,可能被其他 App 抢占;未安装时往往需要页面自己做失败判断和降级。

03

Universal Links 的优势和成本

Universal Links 基于 HTTPS 域名关联,未安装时就是正常网页链接,安全性和体验更好。成本是需要配置关联文件、App entitlement、路径匹配,并受系统和浏览器行为影响。

04

降级不是简单定时器

H5 拉起 App 失败判断常结合 visibilitychange、pagehide、blur/focus 和定时器,但不同浏览器差异很大。降级页要清楚处理已安装、未安装、禁止唤起、弱网和用户取消。

05

深链参数要按不可信输入处理

外部传入的路由、活动、归因和回跳地址都要白名单、签名、过期时间和编码校验,防止开放重定向、越权打开内部页面或污染归因数据。

06

业务选型看主目标

增长投放、短信和网页分享更适合 HTTPS 深链优先;App 间内部能力调用或老环境兼容可保留 Scheme;两者都要有 H5 和应用商店兜底。

易错点

  • 把 URL Scheme 解释成普通 URL 格式,没说清它是自定义协议拉起 App。
  • 只说二者都能打开 App,不比较未安装降级、安全性和域名关联。
  • 认为 H5 能百分百判断是否拉起成功,忽略浏览器和系统限制。
  • 深链参数直接透传到 App 路由,不做白名单、签名和回跳限制。

面试官追问

Universal Links 为什么通常比 Scheme 更安全?

它基于 HTTPS 域名所有权和系统关联文件,App 需要证明自己能关联该域名;Scheme 只注册协议名,更容易冲突或被抢占。

Android 上对应的机制是什么?

Android App Links 使用 HTTPS 链接和 assetlinks.json 建立域名与 App 的关联。普通 intent scheme 也能拉起 App,但安全性和体验要按场景评估。

H5 如何判断 App 是否拉起成功?

没有完全可靠的统一 API,通常用 visibilitychange、pagehide、blur/focus 和超时组合推断。不同系统和浏览器行为差异很大,必须做兜底。

深链归因最容易出什么问题?

参数在浏览器、下载页、商店和首次启动之间丢失或被篡改。需要短链、服务端落库、签名参数、设备或账号绑定,以及首启回传校验。