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

iOS Universal Link后台唤起异常:scene(_:continue:)方法未被调用

关于Universal Link后台唤起时scene(_:continue:)未触发的问题

我已按照Apple官方文档配置Universal Link,冷启动APP时,点击Universal Link可正常唤起APP,并在scene(_:willConnectTo:options:)方法中接收URL,代码如下:

func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
        
    Log("SceneDelegate.scene(_:willConnectTo:options:)")
        
    let userActivities: Set<NSUserActivity> = connectionOptions.userActivities
        
    for userActivity in userActivities {
            
        guard userActivity.activityType == NSUserActivityTypeBrowsingWeb,
            let universalLink = userActivity.webpageURL else {
            Log("Not launched via universal links!")
            return
        }
            
        Log(String(format: "userActivities = %@", String(describing: userActivity)))
        Log(String(format: "universalLink = %@", universalLink.absoluteString))

        // Update UI
    }
}

但当APP处于后台运行状态时,点击Universal Link唤起APP到前台,链接并未按照文档说明以NSUserActivity对象传递到scene(_:continue:)方法中,该方法未被调用,导致UI无法更新。参考相关方案后问题仍未解决,请问缺少哪些配置或步骤?

scene(_:continue:)方法代码如下:

func scene(_ scene: UIScene, continue userActivity: NSUserActivity) {
        
    Log("SceneDelegate.scene(_:continue:)")
        
    guard userActivity.activityType == NSUserActivityTypeBrowsingWeb,
        let universalLink = userActivity.webpageURL else {
        Log("Not launched via universal links!")
        return
    }
        
    Log(String(format: "userActivities = %@", String(describing: userActivity)))
    Log(String(format: "universalLink = %@", universalLink.absoluteString))
        
    // Update UI
}

可能的解决步骤:

  • 确认SceneDelegate的代理配置:确保SceneDelegate正确遵循UIWindowSceneDelegate协议,同时在Info.plist的Application Scene Manifest中,Delegate Class Name已正确指向你的SceneDelegate类(注意类名需包含完整模块路径)。
  • 检查关联域名与配置文件:
    • 苹果开发者后台和Xcode的Signing & Capabilities中,Associated Domains的域名必须以applinks:开头,且与服务器上的apple-app-site-association文件域名完全一致。
    • 验证apple-app-site-association文件的paths规则,避免设置仅允许冷启动的路径(比如不要用NOT规则误排除后台唤起场景),同时确保appIDs字段包含你的APP的Team ID + Bundle ID组合。
  • 兜底处理其他回调方法:部分场景下,后台唤起的Universal Link会通过scene(_:openURLContexts:)传递,可实现该方法进行兜底:
    func scene(_ scene: UIScene, openURLContexts URLContexts: Set<UIOpenURLContext>) {
        guard let url = URLContexts.first?.url else { return }
        // 复用你的Universal Link处理逻辑
        handleUniversalLink(url: url)
    }
    
  • 清除缓存并重新安装:删除APP后重启设备,再重新安装,避免旧的关联配置缓存导致的异常。
  • 排查第三方SDK或路由框架的拦截:检查APP内集成的第三方SDK(如社交、支付类)或自定义URL路由框架,是否拦截了Universal Link的传递,导致系统回调未触发。
  • 验证系统版本适配:确保代码适配iOS 13及以上的Scene架构,避免因版本差异导致的回调逻辑不兼容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 22:57:42