应用端实验室移动应用
00 / 00

Deep Link 与外部跳转

移动端 scheme、登录回跳、Web 跳转和 Universal Links 的检查方式

Deep Link 让外部链接能直接打开 App 里的某个页面。登录、邮件验证、分享、Widget、支付回跳都可能用到。

你将学到

  • Deep Link 的基本工作原理:外部入口到 App 页面
  • 自定义 scheme 和 Universal Link 的区别
  • 五种常见场景各自需要检查什么
  • 没装 App 时的 fallback 处理

Deep Link 的核心很简单:外部有一个链接(邮件里的、网页上的、其他 App 分享的),这个链接匹配到你的 App scheme 或 Universal Link 规则,系统就把用户带到 App 里对应的页面。

模板里已经配好了 Expo Router 的路由解析。你需要确认的是:app.json 里的 scheme 和你在各个服务端配置的回调地址一致。

两种链接方式的区别:

方式原理适用场景
自定义 schemeyourapp://page 形式,App 注册了就能接收OAuth 回调、内部跳转
Universal Linkshttps://yourapp.com/page 形式,需要 AASA 文件外部分享、网页和 App 互通

自定义 scheme 简单但容易冲突,Universal Links 更可靠但需要服务端配合。MVP 阶段先用 scheme,后续再加 Universal Links。

常见场景

入口检查点
OAuth 登录回跳后 session 能恢复,不丢用户操作上下文
Magic Link链接过期时能重发,不显示技术错误
Web 价格页从 App 跳 Web 后能回到 App,不白屏
Widget点击后能打开目标页面,App 未启动时也能拉起
分享链接没装 App 时有 fallback,不出现空白页

其中"没装 App"的 fallback 容易被忽略。如果你的分享链接会在微信、短信等渠道传播,要确保链接在没有安装 App 的设备上也能打开一个网页,而不是什么都不发生。

测试 Deep Link 时,用 npx uri-scheme 命令模拟系统调用:

npx uri-scheme open yourapp://some-page --ios

这条命令等价于从外部点击了一个 scheme 链接。如果 App 能正确打开目标页面,说明路由解析正常。

Android 上用类似的命令测试:

npx uri-scheme open yourapp://some-page --android

如果链接打不开 App,先检查 app.json 里的 scheme 配置,再确认 App 已经在设备上安装并运行过至少一次。

下一步

Deep Link 验证通过后,进入 数据与同步 了解 App 如何通过 API 获取数据和处理多端同步。

想和其他创造者交流?

这篇文档有问题?