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

Swift中NSWorkspace.OpenConfiguration()配置不生效问题如何解决?

问题根因
  • 代码中先调用了无配置的workspace.open(bundleURL)方法,这个调用会直接正常启动、激活并显示Safari,后续带配置的openApplication执行时,Safari已经处于运行状态,而NSWorkspace.OpenConfiguration的activates、hides参数仅对新启动的应用进程生效,对已经运行的应用不会触发状态变更。
  • 重复调用启动方法时,系统默认会触发已运行应用的激活逻辑,反而抵消了你的配置效果。
修复后的代码
let workspace = NSWorkspace.shared
if let bundleURL = workspace.urlForApplication(withBundleIdentifier: "com.apple.Safari"){
   let conf = NSWorkspace.OpenConfiguration()
   conf.activates = false
   conf.hides = true
   workspace.openApplication(at: bundleURL, configuration: conf){ (app, err) in
       print(app as Any)
       print(err as Any)
   }
}
补充说明

如果需要兼容Safari已经在后台运行的场景,可以在回调中额外添加隐藏逻辑:

workspace.openApplication(at: bundleURL, configuration: conf){ (app, err) in
    if let app = app {
        // 针对已运行的应用主动触发隐藏
        app.hide()
    }
    print(app as Any)
    print(err as Any)
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 22:48:05