使用 Universal Links 和 App Links 实现深度链接
支持平台:iOS, Android
Universal Links(iOS)和 App Links(Android)提供了将用户直接引导至原生应用内特定内容的能力(通常称为深度链接)。
当用户点击深度链接时,用户将被直接发送到您的应用中,无需先经过设备浏览器或网站。如果应用未安装,用户将被引导至网站。如果用户直接导航到网站,他们将停留在网站上。这使得深度链接成为为 Web、iOS 和 Android 构建的跨平台应用的绝佳功能:无缝的移动体验,并优雅地回退到网站。
优势:
- 安全:Universal/App Links 使用链接到您拥有的网站域的 HTTPS URL,确保其他应用无法使用您的链接
- 无缝体验:同一个 URL 对您的网站和应用都有效,确保用户能够成功访问他们寻找的内容而不会出错
- 提高参与度:链接可以从电子邮件客户端、搜索引擎结果等中打开
演示视频
以下是实际效果示例。在这个例子中,用户已经安装了原生应用。他们从电子邮件中点击应用链接,被直接带入应用本身。首先,点击根链接 (https://beerswift.app),将用户引导至应用主页面。接着,点击深度链接 (https://beerswift.app/tabs/tab3) 将用户带到 Tab3 页面。
前提条件
- 已预先配置好的 Capacitor 应用
- 对于 iOS,需要加入 Apple Developer Program
出于说明目的,将使用 https://beerswift.app 作为 Web 应用链接。
使用 Capacitor App API 实现深度链接路由
当点击深度链接后打开原生应用时,移动操作系统不会自动知道将用户路由到哪里。这必须在应用启动时使用 Capacitor App API 在应用内部实现。
如果您的网站和应用路径不匹配,您需要实现更高级的 URL 模式匹配(示例请参阅此指南)。但如果您的移动应用和 Web 应用使用相同的代码库,这将非常简单——只需重定向到相同的 URL。以下示例假设这种情况。
Angular
路由应在 app.component.ts 中实现。首先从 Angular 导入 NgZone 和 Router,然后从 Capacitor 导入 App:
import { Component, NgZone } from '@angular/core';
import { Router } from '@angular/router';
import { App, URLOpenListenerEvent } from '@capacitor/app';
接下来,将 Router 和 NgZone 添加到构造函数中:
constructor(private router: Router, private zone: NgZone) {
this.initializeApp();
}