Skip to main content
深度链接是一种 URL,它可以将用户直接带到移动应用或网站中的特定内容,而不仅仅是启动应用的主屏幕。它们的作用类似于快捷方式,能够实现更流畅的导航并改善用户体验。 在本指南中,您将学习将深度链接添加到基于 Expo 的移动应用中的基础知识。

什么是深度链接?

深度链接由三部分构成:
  • Scheme:标识应打开该 URL 的应用的 URL scheme(示例:myapp://)。对于非标准的深度链接,它也可以是 https 或 http。
  • Host:应打开该 URL 的应用的域名(示例:web-app.com)。
  • Path:应打开的屏幕的路径(示例:/product)。如果未指定路径,用户将被带到应用的主屏幕。
深度链接也可以像网页链接一样带有参数! 示例:

构建深度链接

如果您想尝试深度链接的演示,可以克隆仓库并切换到 branch/deeplink 分支:

定义 scheme

第一步是定义一个 scheme;您可以通过编辑 Expo 项目中的 app.json 文件来完成。
app.json
myapp:// 这样的自定义 scheme 在 Android 或 iOS 上并非唯一。 如果两个应用注册了相同的 scheme,系统将不知道要启动哪个,或者可能启动错误的那个。 请使用应用特有的、不易意外重复的 scheme。

监听深度链接事件

在您的应用入口处(例如 _layout.tsx 或一个 provider),添加以下逻辑:
  • 处理初始深度链接
  • 监听深度链接变化
一个好的做法是创建一个 DeepLinkHandler 并用它包裹整个应用。 示例(在使用基于文件的路由的 Expo 项目中):
app/_layout.tsx
就这样,您的应用已准备好处理深度链接,您可以根据 hostnamequeryParams 将用户重定向到相应的屏幕。 此外,如果您让 queryParams 可全局访问(通过 context 或其他方式),您还可以预填输入值! 示例:预填代币兑换金额!

测试深度链接

以下是深度链接在移动应用中如何工作的演示:

在 iOS 模拟器上测试

示例:

在 Android 模拟器上测试

示例:
如果不使用单引号,shell 会将 & 解释为命令分隔符,只有第一个参数会被传递给应用。

在实体设备上测试

您可以创建一个带有链接的简单 HTML 页面。 示例:

尝试演示

如果您想尝试深度链接演示,可以配置仓库并切换到 branch/deeplink 分支。
以下是您可以尝试的一些深度链接:
  1. 将 MON 兑换为 USDC
  1. 将 100 MON 兑换为 USDC
  1. 将 USDC 兑换为 WMON