Я подозреваю, что причина, по которой многие разработчики выбирают вариант B, заключается в том, что эта схема теперь встроена в macOS с помощью средства «Элементы входа».
В двух словах, ваше основное приложение встраивает второе (вспомогательное) приложение.и это приложение настроено как «Элемент входа».macOS обнаруживает это и автоматически добавляет ваше вспомогательное приложение к элементам входа пользователя.Вы можете управлять этим программным способом, используя SMLoginItemSetEnabled(...)
.
. В результате вы получаете обычное приложение, с которым знакомы пользователи, и вспомогательное приложение, которое автоматически запускается при входе в систему и может работать в фоновом режиме.Я также уверен, что это включает в себя бесплатное подключение XPC, которым вы можете воспользоваться.
Узнайте все об этом в разделе Добавление элементов входа в систему печально известного Руководства по программированию демонов и служб .
Я никогда не делал этого сам (в настоящее время я устанавливаю фоновые приложения в качестве пользовательских агентов, что я могу сделать, потому что у меня нет изолированного приложения), но я исследовал его для другого проекта, и я знаю многоприложений делают это.
Один из недостатков варианта A (на основе отзывов пользователей из моих собственных приложений) заключается в том, что основное приложение не будет работать как обычное приложение.Используя подход A, ваши пользователи либо не могут выйти из приложения (потому что для этого потребуется автоматический перезапуск), либо вам нужен способ скрыть его в доке, а затем нет (очевидного) способа запустить его снова.Это просто сбивает с толку.Если вы разрешите своим пользователям выйти из приложения, фоновая функциональность исчезнет, и это создаст другие проблемы.