首页 > 解决方案 > NSWorkspace.OpenConfiguration() 不工作?- 斯威夫特

问题描述

我不知道为什么,但为什么下面的代码没有预期的行为?

let workspace = NSWorkspace.shared
if let bundleURL = workspace.urlForApplication(withBundleIdentifier: "com.apple.Safari"){
   workspace.open(bundleURL)
   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 应用程序正常打开,“隐藏”和“激活”false 都不起作用。

Obs:应用沙盒:否 | 部署目标:11.3 | Xcode:12.5.1

标签: swift

解决方案


您在这里打开应用程序两次

workspace.open(bundleURL) // first time
let conf = NSWorkspace.OpenConfiguration()
conf.activates = false
conf.hides = true

// second time
workspace.openApplication(at: bundleURL, configuration: conf){ (app, err) in
    print(app as Any)
    print(err as Any)
}

您第一次没有使用该配置,因此它在前台打开它而不隐藏。而且既然已经启动了,第二次打开也没有用。

只需删除workspace.open(bundleURL). 它对我有用。


推荐阅读