You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Swift 5中Universal Links已实现但无法处理跳转事件求助

问题分析与解决方案

你遇到的核心问题是Universal Links跳转事件未触发AppDelegate中的处理方法,结合你使用的Xcode14(默认采用iOS 13+的Scene架构),主要原因和解决步骤如下:

1. 优先检查SceneDelegate的实现(iOS 13+必看)

Xcode14创建的iOS项目默认启用Scene架构,此时处理Universal Links跳转的逻辑不再由AppDelegate负责,而是转移到SceneDelegate中。你需要在SceneDelegate.swift中实现对应的方法:

func scene(_ scene: UIScene, continue userActivity: NSUserActivity) {
    // 确认是Universal Links触发的跳转
    guard userActivity.activityType == NSUserActivityTypeBrowsingWeb,
          let targetURL = userActivity.webpageURL else {
        return
    }
    
    print("接收到Universal Link: \(targetURL)")
    // 在这里添加你的业务逻辑,比如解析URL路径、导航到对应页面
}

2. 清理AppDelegate中的冗余代码

你代码中存在两个版本的continueUserActivity方法:

  • 第二个application(application:continueUserActivity:restorationHandler:)是Swift 2时代的旧写法,在Swift 5中不会被系统调用,直接删除即可。
  • 第一个方法是Swift 3+的正确写法,但仅在未启用Scene架构的项目中生效(即Info.plist中没有UIApplicationSceneManifest条目)。如果你的项目是Scene架构,这个方法不会触发,可以保留但无需依赖它处理跳转。

3. 额外验证点

  • 确认apple-app-site-association文件配置正确,且服务器能被苹果正常访问。
  • 真机测试:模拟器的邮件/消息跳转可能存在缓存问题,建议用真机测试点击链接的场景。
  • 打印完整日志:在处理方法中打印userActivity的所有属性,确认是否接收到正确的跳转事件,比如:
    print("Activity Type: \(userActivity.activityType)")
    print("User Info: \(userActivity.userInfo ?? [:])")
    

内容的提问来源于stack exchange,提问作者Samuil Banti

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 16:15:26