Я решил эту проблему другим способом. Вместо использования NSWorkspace.shared.openApplication(at:configuration:)
я теперь вызываю Process
, который открывает open
.
Это также работает с версиями ниже Catalina и даже работает с песочницей . Однако в песочнице есть одна загвоздка, подробнее в конце.
Обходной путь
let task = Process()
task.arguments = ["-a", executablePath, url.absoluteString]
task.launchPath = "/usr/bin/open"
task.launch()
Нет необходимости ждать процесс, так как а) возврат open не так полезен и б) в любом случае это происходит практически сразу. родительское приложение.
Это означает, что приложение, открытое с использованием Process
, имеет ту же песочницу. Если вы используете open
, чтобы открыть URL-адрес, как это делаю я, это нормально, потому что open
в любом случае порождает новый процесс без нашей песочницы. Однако это означает, что вы не можете использовать это открытое другое обычное приложение, если оно не работает нормально с вашей песочницей.