Как встроить приложение какао в другое приложение какао и запустить его как подпроцесс - PullRequest
0 голосов
/ 21 мая 2019

Я хочу встроить приложение A в другое приложение B. Когда приложение A запускается, оно должно действовать как оболочка и запускать приложение B изнутри, не отображая приложение B в docbar. Цель приложения A - просто оболочка. некоторая инициализация для запуска приложения B в зависимости от того, откуда оно запускается

1 Ответ

2 голосов
/ 21 мая 2019

В вашем проекте создайте оба приложения, используя разные цели.

В приложении A> Цель> Фазы сборки:

  • Добавить приложение B к Target Dependancies
  • Добавьте продукт из приложения B в фазу Copy Bundle Resources.

Теперь, когда вы создаете приложение A, Xcode создаст приложение B и скопирует готовое приложение B в папку Resources пакета приложения A.

Вы не объясняете почему вы хотите это сделать, поэтому вот несколько идей, с чего можно начать ...

Вариант А:

Используйте класс NSBundle, чтобы найти встроенное приложение B и запустить его так, как считаете нужным (напрямую, используя launchd и т. Д.).

Если вы не хотите, чтобы приложение B отображалось в док-станции или было в строке меню, вам нужно установить LSUIPresentationMode в Info.plist приложения или программно настроить свойство activationPolicy приложения.

Вариант B:

Рассмотрите возможность создания службы XPC. Службы XPC - это специальный встроенный исполняемый файл, который macOS запускает для вас всякий раз, когда вам это нужно, и устанавливает для вас соединение XPC, чтобы вы могли с ним общаться и выполнять работу.

См. Создание служб XPC

В XPC также есть средства, позволяющие безликому (не относящемуся к делу) вспомогательному процессу иметь пользовательский интерфейс, который появляется в вашем приложении. (Именно так работает Safari; каждая страница обрабатывается отдельным вспомогательным процессом, использующим XPC для управления страницей и представления ее в окне Safari.)

...