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

如何将Universal Link获取的code参数传递到目标ViewController中

问题原因

你出现报错的核心原因有2个:

  • 你当前解析得到的code是scene(_:continue:)方法内的局部临时变量,仅在该方法的作用域内有效,方法执行完成后就会被销毁。你没有在SceneDelegate类的顶层声明对应的成员属性,所以外部访问sceneDelegate.code自然会提示属性不存在。
  • 即使你后续补充了SceneDelegate的code属性,你当前在viewDidLoad中获取SceneDelegate的方式也存在时机问题:viewDidLoad触发时ViewController的视图还没有完全挂载到Window层级上,self.view.window大概率为nil,最终也拿不到对应的code值。

解决方案

方案1:直接在初始化ViewController时传值(更推荐,逻辑更清晰无歧义)

  1. 先在CallbackViewController类中声明用于接收code的属性
class CallbackViewController: UIViewController {
    // 新增接收code的属性
    var code: String?
    
    override func viewDidLoad() {
        super.viewDidLoad()
        // 直接用self.code即可
        print(code ?? "未获取到code")
    }
}
  1. 在SceneDelegate初始化ViewController之后,直接把解析到的code赋值过去
    修改你scene(_:continue:)方法里的初始化逻辑:
guard let rootVC = storyboard.instantiateViewController(identifier: "CallbackViewController") as? CallbackViewController else {
    print("ViewController not found")
    return
}
// 新增这行,直接传值
rootVC.code = code
let rootNC = UINavigationController(rootViewController: rootVC)

方案2:通过SceneDelegate属性传递

如果你坚持要通过访问SceneDelegate的方式获取code,按以下步骤修改:

  1. 在SceneDelegate类顶层声明code成员属性
class SceneDelegate: UIResponder, UIWindowSceneDelegate {
    var window: UIWindow?
    // 新增全局code属性
    var code: String?
    
    // 剩下的原有方法不变
    func scene(_ scene: UIScene, continue userActivity: NSUserActivity) {
        // ...原有逻辑
        if let code = params.first(where: { $0.name == "code" } )?.value {
            // 新增这行,把局部code的值存到全局属性
            self.code = code
            // ...剩下的原有逻辑
        }
    }
}
  1. 把ViewController中获取code的逻辑从viewDidLoad移到viewDidAppear中,此时ViewController已经挂载到Window上,可以正常获取SceneDelegate
override func viewDidAppear(_ animated: Bool) {
    super.viewDidAppear(animated)
    if let sceneDelegate = self.view.window?.windowScene?.delegate as? SceneDelegate {
        let code = sceneDelegate.code
        print(code ?? "未获取到code")
    }
}

内容的提问来源于stack exchange,提问作者Jon Nicholson

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 20:27:00