Связь между приложениями macOS на локальном Mac - PullRequest
0 голосов
/ 23 ноября 2018

Существует ли в Swift простой способ для одного приложения MacOS отправить сообщение другому приложению MacOS на том же Mac (localhost).У меня есть два приложения macOS, одно из которых - приложение меню.В некоторых ситуациях стандартное приложение macOS должно отправить уведомление (билет в один конец, запустить и забыть) в приложение меню.

1 Ответ

0 голосов
/ 23 ноября 2018

Существуют десятки различных способов достижения этой цели.Каждый из них имеет свои преимущества и недостатки.

Вероятно, самым простым является отправка уведомлений с использованием DistributedNotificationCenter от Foundation.Это похоже на обычный NotificationCenter, но через границы процесса.

На принимающей стороне вы регистрируете наблюдателя следующим образом:

DistributedNotificationCenter.default().addObserver(forName: NSNotification.Name("com.mycompany.MyNotification"), object: nil, queue: nil) { notification in 
    print(notification) 
}

На отправляющей стороне вы отправляете уведомление, подобное этому:

DistributedNotificationCenter.default().post(name: NSNotification.Name("com.mycompany.MyNotification"), object: nil, userInfo: ["data": "to send"])

Это не очень безопасно, хотя - любой процесс может отправлять и получать эти уведомления.Поэтому, если они содержат личные данные, вы не должны использовать этот метод.Это также означает, что вы должны использовать уникальное имя уведомления.Хорошая идея - начать с обратного DNS-имени, например com.mycompany..

Если ваше приложение находится в изолированной программной среде, есть еще одно ограничение: вы не можете отправлять словарь userInfo.

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