Мой вариант использования: у меня есть «MainApp», который выполняет синхронизацию файлов. Я хотел бы, чтобы «MainApp» обрабатывал все вызовы сервера, касающиеся синхронизации и других вызовов REST API, таких как обмен документами и т. д.
С другой стороны, у меня было бы расширение Finder Sync, которое показывало бы наложения значков состояния синхронизации. Он также будет иметь элемент контекстного меню файла «Поделиться», который представит диалоговое окно «Поделиться», в котором пользователи могут выбрать, с кем поделиться файлом.
Вопросы:
Как должны взаимодействовать FinderSyncExtension и MainApp? Следует ли использовать XCP, и если да, то нормально ли, что связь является двусторонней? Например, MainApp сообщает Finder, что он должен обновиться, поскольку некоторые файлы были синхронизированы, а Finder сообщает MainApp, что он должен выполнить операцию «Общий доступ».
Кто должен представить диалоговое окно «Поделиться»? При выборе пункта меню «Поделиться» FinderSyncExtension должна отображаться форма «Поделиться». Должно ли это отображаться расширением Finder или MainApp (при условии, что FinderExtension сообщил ему, что элемент «Поделиться» был нажат).
Если расширение Finder должно представлять форму, то FinderExtension также должно получать данные с сервера (например, контакты и группы для совместного использования), и я не уверен, должно ли расширение Finder выполнять какие-либо сетевые вызовы к серверу.
Изучая тему, я нашел несколько подходов:
- FinderSyncExtension и MainApp не взаимодействуют напрямую. Вместо этого FinderExtension считывает данные из базы данных, чтобы правильно отображать значки. В этом сценарии неясно, как FinderExtension должен обновляться после завершения синхронизации или как он должен информировать MainApp о выполнении каких-либо действий.
- Связь ХПК. Я предполагаю, что FinderExtension может инициировать вызовы MainApp, но ожидается ли противоположное направление?
- Есть ли какой-то NotificationCenter между процессами macOS? Я пробовал с
NSWorkspace.sharedWorkspace.notificationCenter
и сNSDistributedNotificationCenter.defaultCenter
, но они, похоже, не доставляют уведомления в MainApp. - mach_ports как в проекте Seafile?