Каков стандартный метод написания постоянно работающего приложения, разрешенного в Mac App Store - PullRequest
3 голосов
/ 22 декабря 2011

Я новичок в программировании для OS X и Mac. Я ищу написать приложение, которое работает непрерывно или просыпается каждые 30 секунд, чтобы выполнить какую-то незначительную задачу. Это будет что-то вроде проверки погоды через веб-сервис и отстреливания по электронной почте, если температура опустится ниже нуля. В Windows я бы просто использовал службу или поместил повторяющуюся задачу в планировщик задач. Есть ли стандартный способ сделать это в OS X , который в магазине приложений Mac позволяет ? Я хотел бы написать кое-что, что я могу положить в магазин, но у Apple, похоже, есть смутные ограничения на запуск фоновых процессов.

Я немного узнал о launchd, но не могу сказать, разрешено ли мне его использовать. В идеале процесс должен запускаться, даже если никто не вошел в систему, но, вероятно, ему не потребуется доступ с правами root. Если кто-то вошел в систему, это вызвало бы всплывающее окно, если бы он отправил по электронной почте предупреждение о температуре. У меня также будет некоторый графический интерфейс, который пользователь сможет изменять в файлах конфигурации, определяющих поведение фонового процесса. Я не ожидаю каких-либо ограничений магазина приложений для этой части проекта.

Ответы [ 2 ]

3 голосов
/ 22 декабря 2011

Я почти уверен, что приложение, которое работает так незаметно, не будет допущено в App Store. То, что вы хотите, это создать приложение только для меню, которое можно включить, установив ключ в информации вашего приложения, а именно LSUIElement. Хотя он не сможет быть запущен, если пользователь не вошел в систему, это единственный способ успешно доставить его в магазин.

2 голосов
/ 22 декабря 2011

В правилах MAS есть несколько запретов, которые могут повлиять на вас. Перейдите к руководящим указаниям и прочитайте раздел 2. В частности, рассмотрите 2.15, 2.23 и 2.27. Я не знаю, как заставить ваше приложение работать до входа в систему, не запрашивая в какой-то момент привилегий администратора (даже если вы не используете эту привилегию при запуске).

Возможно, я бы сделал это элементом входа в систему (Системные настройки> Пользователи> Элементы входа), вероятно, как приложение LSUIElement, как подсказывает sudo rm -rf. Определенно, если это ваше первое приложение, я бы не стал погружаться в launchd в любом случае. Это один из самых раздражающих системных процессов, с которыми я когда-либо сталкивался.

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