Как убедиться, какой процесс активируется при нажатии на уведомление? - PullRequest
0 голосов
/ 10 октября 2019

У меня есть приложение macOS, которое, хотя и работает, иногда перезапускается напрямую через командную строку с некоторыми аргументами. В этом случае будет два запущенных процесса, а второй вызовет уведомление. Они должны быть отдельными процессами, потому что второй завершается динамическим кодом завершения, а другие сценарии зависят от этого кода.

В любом случае, когда я нажимаю на уведомление, я хочу убедиться, чтоокно второго процесса - это то, что вызывается. В настоящее время нажатие на уведомление непредсказуемо активирует любой процесс. Иногда открывается второе окно, а иногда первое. Как мне обеспечить, чтобы каждый раз появлялось одно и то же окно?

Я пытался использовать userNotificationCenter(_:didReceive:withCompletionHandler:), чтобы проверить процессы с соответствующим идентификатором пакета и активировать только одно с текущим идентификатором процесса, так какэтот метод работает только для процесса, который вызвал уведомление.

Я также пытался использовать applicationShouldHandleReopen(_:hasVisibleWindows:) для проверки количества процессов с идентификатором пакета и return false, когда это число больше 1. (Это работает хорошо, когда первое окно процесса закрыто, затем нажатие на уведомление активирует только второе окно процесса, как и предполагалось. Но это не работает, когда оба окна открыты).

Заранее спасибо залюбые советы в правильном направлении!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...