马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
x
一、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:
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 ([UIUserActivityRestoring]?) -> 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企服之家,中国第一个企服评测及商务社交产业平台。 |