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

iOS18控制中心Widget点击后无法在AppDelegate打开指定页面(URL打开失败)

iOS 18控制中心Widget触发URL无响应问题排查与解决

1. 核心拼写错误导致系统找不到Scheme

从控制台报错Failed to open URL runFun://beginRun可以明确:你配置的URL Scheme是funRun://beginRun,但实际触发的URL是拼写颠倒的runFun://beginRun。系统找不到对应runFun scheme的应用,直接抛出NSOSStatusErrorDomain Code=-10814错误,这是根本原因。

立刻检查Widget扩展中触发URL的代码,确保所有调用都使用正确的funRun://beginRun。

2. iOS 18下AppDelegate方法失效,改用SceneDelegate处理

iOS 13+引入Scene架构后,AppDelegate的application(_:open:options:)方法在多场景应用中不再触发,iOS 18中这一行为更严格。你需要在SceneDelegate中实现对应方法:

func scene(_ scene: UIScene, openURLContexts URLContexts: Set<UIOpenURLContext>) {
    guard let url = URLContexts.first?.url else { return }
    print("Scheme \(url.scheme)")
    print("Host \(url.host)")
    // 在这里处理页面跳转逻辑
}

若项目无SceneDelegate,需补充配置:

  • 创建SceneDelegate.swift文件,实现UIWindowSceneDelegate协议
  • 在Info.plist中添加Application Scene Manifest,指定SceneDelegate类名

3. Widget中打开URL的正确实现方式

Intent扩展中触发URL

在Intent处理类中,通过userActivity传递URL:

func handle(intent: YourCustomIntent, completion: @escaping (YourCustomIntentResponse) -> Void) {
    guard let url = URL(string: "funRun://beginRun") else {
        completion(.failure())
        return
    }
    let response = YourCustomIntentResponse(code: .success, userActivity: nil)
    response.userActivity = NSUserActivity(activityType: NSUserActivityTypeBrowsingWeb)
    response.userActivity?.webpageURL = url
    completion(response)
}

SwiftUI Widget按钮触发URL

使用Link控件替代自定义跳转逻辑:

Link(destination: URL(string: "funRun://beginRun")!) {
    Text("启动应用")
}

4. 验证URL Scheme配置正确性

再次核对Target的Info配置:

  • 打开Target → Info → URL Types
  • 确保URL Schemes字段为funRun(仅填scheme部分,不要带://和host)
  • Identifier填写唯一标识(如com.yourcompany.funRun)

5. iOS 18额外注意事项

  • 应用与Widget扩展的Bundle ID需属于同一开发者组,Widget的Info.plist需正确配置NSExtension类型
  • 真机测试前重启应用和Widget;模拟器存在缓存时,建议重置模拟器后再测试

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 13:26:14