如何在iOS上添加带重定向的通用链接

了解如何在 iOS 上设置通用链接,实现从网站到应用的无缝跳转,并理解使用重定向的局限性。

Intermediate

iOS 平台的通用链接能无缝引导用户从网站跳转至应用内的特定内容。但需注意关键限制:由于苹果实施的安全措施,通用链接通常不支持自动跳转功能。若用户点击通用链接后被自动跳转,iOS 系统通常会通过 Safari 浏览器打开网页备用方案,而非启动您的应用。

这意味着当您期望重定向链接打开应用时,该操作很可能失败,用户将被引导至浏览器中的网页界面。

尽管存在此限制,配置通用链接对提升用户体验仍至关重要。具体实现步骤如下:

1. 在 Xcode 项目中启用关联域名

首先需告知 iOS 应用支持通用链接:* 在 Xcode 中打开项目* 选择应用目标* 切换至"签名与功能"选项卡* 点击"+ 功能"按钮并选择"关联域名" * 添加域名时需添加applinks:前缀(例如applinks:yourdomain.com)。

2. 创建并托管apple-app-site-association(AASA)文件

此JSON文件用于告知iOS系统您网站上的哪些URL应在应用中打开。 * 创建文件:命名为apple-app-site-association(不带任何文件扩展名)。* 内容:文件应包含指定应用程序包ID及其可处理路径的JSON数据。

```json {
 "applinks": {  "apps": [],  "details": [       {  "appID": "YOUR_TEAM_ID.YOUR_BUNDLE_ID",
 "路径": [ "/路径/到/内容/*", "/另一个/路径/*", "*" ]  }
 ]  } } ```
* 替换 `YOUR_TEAM_ID`  您的 Apple 开发者 团队 ID  `YOUR_BUNDLE_ID`  应用 的包标识符。 * `paths` 数组指定应用可处理的 URL。可使用通配符(如 `*`)匹配多个路径。
  • 托管文件: 将此文件上传至 Web 服务器的根目录或 .well-known 目录内(例如 https://yourdomain.com/.well-known/apple-app-site-association)。
    • 文件必须通过 HTTPS 访问且不包含任何重定向。
    • 确保内容类型为 application/json

3. 在应用中处理通用链接

当应用通过通用链接启动时,需作出响应。 * 在AppDelegate.swift文件中实现application(_:continue:restorationHandler:)方法。* 该方法内可解析URL及其参数,引导用户跳转至应用内对应内容。

```swift func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool {
 guard userActivity.activityType == NSUserActivityTypeBrowsingWeb,
 let incomingURL = userActivity.网页URL else {  返回 false
 }

 // 处理 传入URL, e.g., 解析  路径  查询 参数
 print("传入URL: \(incomingURL)")
 // 示例: 导航  特定 屏幕 基于  URL
 // handleUniversalLink(url: incomingURL)  return true } ```

重定向注意事项与解决方案

  • 仅限直接点击:通用链接的设计原理是用户直接点击时生效。
  • 营销自动化与追踪:若使用营销自动化工具或需通过重定向进行点击测量,用户可能被引导至网页备用网址而非应用。此类情况下,建议选用支持归因测量且能直接对接邮件服务商的深度链接提供商。
  • Safari导航箭头:iOS系统可能在Safari浏览器中显示导航箭头,点击该箭头会将用户引导至关联网站,即使应用已安装。 若该网站随后跳转至App Store,将造成用户体验混乱。
  • 备用机制:当用户未安装应用时,通用链接将通过Safari打开指定网址。您可在网站实现备用方案,在未检测到应用时将用户重定向至App Store。

通用链接测试方法

  • 在实体iOS设备或模拟器上安装应用程序。
  • 将通用链接通过邮件发送给自己或托管在网页上。
  • 通过设备邮件客户端或网页浏览器点击链接。
  • 验证链接能否直接打开应用并跳转至预期内容。若应用未安装,请确认是否正确重定向至备用网址。
  • 请注意,苹果内容分发网络(CDN)获取您的AASA文件可能需要一定时间(最长24小时)。