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

iOS终止状态下Flutter app_links的getInitialLink()返回null问题

解决方案

问题出在UIScene生命周期的URL转发逻辑上,iOS 13+的Scene模式下,AppDelegate的application(_:open:options:)无法正确将启动URL传递给Flutter的隐式引擎,需要在SceneDelegate中补充处理:

步骤1:在SceneDelegate中实现URL处理方法

打开SceneDelegate.swift,添加以下代码:

override func scene(_ scene: UIScene, openURLContexts URLContexts: Set<UIOpenURLContext>) {
    guard let url = URLContexts.first?.url else { return }
    // 将URL转发给FlutterImplicitEngineDelegate
    if let flutterDelegate = self.window?.rootViewController as? FlutterImplicitEngineDelegate {
        flutterDelegate.application(UIApplication.shared, open: url, options: [:])
    }
}

步骤2:确保SceneDelegate继承正确

确认你的SceneDelegate继承自FlutterSceneDelegate:

class SceneDelegate: FlutterSceneDelegate {
    // 原有代码...
}

原因说明

在UIScene架构下,App的启动、URL跳转等核心逻辑已从AppDelegate迁移到SceneDelegate。你之前在AppDelegate中捕获到的URL是系统的兼容性回调,但并未传递给Flutter的FlutterImplicitEngineDelegate,导致app_links包无法获取到初始启动链接。通过在SceneDelegate中实现scene(_:openURLContexts:)并手动转发URL,就能让getInitialLink()正确拿到启动时的深度链接。

另外,可额外确认Info.plist中的URL Scheme配置是否完整:

  • 已添加CFBundleURLSchemes并包含你的自定义scheme(flyfi)
  • 若需要调用其他App的链接,已配置LSApplicationQueriesSchemes

内容的提问来源于stack exchange,提问作者harkishan pansuriya

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.04 07:03:10