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]