梦应逍遥 发表于 2025-4-19 18:08:00

iOS Universal Links 深入明白与实践

一、Universal Links 简介

Universal Links 是 Apple 在 iOS 9 引入的深度链接技术,用于建立网站和 App 之间的无缝连接。它允许用户通过点击网页链接直接打开 App 中的特定内容。
二、工作原理

1. 系统行为差异

1) Safari 欣赏器中:

// 首次点击 Universal Link
- 打开对应网页
- 显示系统级 banner "在 xxx 中打开"
- 用户可选择:
- "打开": 本次打开 App
- "取消": 保持网页
- "始终": 后续直接打开 App
2) 其他应用中(短信、备忘录等):

// 点击 Universal Link
- 直接打开 App
- 不显示网页
- App 直接收到回调

三、配置步骤

1. 服务端配置

需要配置 apple-app-site-association 文件:
{
    "applinks": {
      "apps": [],
      "details": [{
            "appID": "TeamID.BundleID",
            "paths": ["/app/*"]
      }]
    }
}

2. 验证配置

可通过以下链接查看配置:
https://app-site-association.cdn-apple.com/a/v1/your.domain.com
确认返回的 JSON 是否符合预期:
appIDs 正确
paths 配置合适
JSON 格式正当
3. App 配置

1) 开启 Associated Domains:

applinks:your.domain.com
2) 处置惩罚回调:

// SceneDelegate
func scene(_ scene: UIScene, continue userActivity: NSUserActivity) {
    guard userActivity.activityType == NSUserActivityTypeBrowsingWeb,
          let url = userActivity.webpageURL else {
      return
    }
    handleUniversalLink(url)
}

// AppDelegate (iOS 13 以下)
func application(_ application: UIApplication,
                continue userActivity: NSUserActivity,
                restorationHandler: @escaping (?) -> Void) -> Bool {
    guard userActivity.activityType == NSUserActivityTypeBrowsingWeb,
          let url = userActivity.webpageURL else {
      return false
    }
    handleUniversalLink(url)
    return true
}
四、与 URL Scheme 对比

1. URL Scheme

// 配置
<key>CFBundleURLTypes</key>
<array>
    <dict>
      <key>CFBundleURLSchemes</key>
      <array>
            <string>myapp</string>
      </array>
    </dict>
</array>
优点:
配置简单
支持系统版本范围广
可自界说协议名
缺点:
不安全,易被其他 App 注册相同 scheme
总是显示确认弹窗
无法判断 App 是否安装
2. Universal Links

优点:
更安全(域名唯一性)
更好的用户体验(无需确认)
支持未安装时的降级方案
可以检测 App 是否安装
缺点:
配置相对复杂
需要 HTTPS 域名
仅支持 iOS 9.0+
五、最佳实践

1. 两者联合利用

if #available(iOS 9.0, *) {
    // 优先使用 Universal Links
    openURL("https://your.domain.com/path")
} else {
    // URL Scheme 降级
    openURL("myapp://path")
}
2. 前端注意事项

避免自动跳转 App Store
让系统处置惩罚 Universal Links 逻辑
提供良好的降级体验
3. 常见问题排查

1. 配置验证:

查抄 apple-app-site-association 文件是否可访问
验证 JSON 格式是否正确
确认 TeamID 和 BundleID 是否匹配
2. 行为验证:

Safari 中测试系统 banner 显示
其他应用中测试直接跳转
确认 App 是否正确接收回调
六、总结

Universal Links 是一种优秀的深度链接方案,通过合理配置和利用,可以为用户提供流通的跨 App 跳转体验。在实际应用中:
优先利用 Universal Links
生存 URL Scheme 作为降级方案
注意不同场景下的行为差异
做好配置验证和问题排查
通过这种方式,可以为用户提供最佳的应用间跳转体验。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: iOS Universal Links 深入明白与实践