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

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

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


person JonF    schedule 22.12.2011    source источник


Ответы (2)


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

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

person Rob Napier    schedule 22.12.2011

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

person sudo rm -rf    schedule 22.12.2011