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小时)。