У меня есть приложение macOS, которое, хотя и работает, иногда перезапускается напрямую через командную строку с некоторыми аргументами. В этом случае будет два запущенных процесса, а второй вызовет уведомление. Они должны быть отдельными процессами, потому что второй завершается динамическим кодом завершения, а другие сценарии зависят от этого кода.
В любом случае, когда я нажимаю на уведомление, я хочу убедиться, чтоокно второго процесса - это то, что вызывается. В настоящее время нажатие на уведомление непредсказуемо активирует любой процесс. Иногда открывается второе окно, а иногда первое. Как мне обеспечить, чтобы каждый раз появлялось одно и то же окно?
Я пытался использовать userNotificationCenter(_:didReceive:withCompletionHandler:)
, чтобы проверить процессы с соответствующим идентификатором пакета и активировать только одно с текущим идентификатором процесса, так какэтот метод работает только для процесса, который вызвал уведомление.
Я также пытался использовать applicationShouldHandleReopen(_:hasVisibleWindows:)
для проверки количества процессов с идентификатором пакета и return false
, когда это число больше 1. (Это работает хорошо, когда первое окно процесса закрыто, затем нажатие на уведомление активирует только второе окно процесса, как и предполагалось. Но это не работает, когда оба окна открыты).
Заранее спасибо залюбые советы в правильном направлении!