Использование launchd на IOS для перезапуска приложения - PullRequest
5 голосов
/ 04 мая 2011

Я использую несколько iPad на музейной выставке, запускаю приложение, разработанное другими.Несмотря на то, что мы рассмотрели кнопку «Домой», я обнаружил, что приложение иногда падает, оставляя пользователя на главном экране.Отсюда они могут получить доступ к другим неавторизованным приложениям.

Музей не прочь сделать джейлбрейк iPad, если это даст нам решение, которое нам требуется, поэтому я провел некоторое исследование идеи использования launchd с тегом KeepAlive и помещением файла .plist в/ Library / LaunchAgents каталог для предотвращения закрытия или повторного запуска приложения в случае его сбоя

До сих пор мне удавалось заставить его работать со стандартными приложениями, которые поставляются с iPad, а также с установленными приложениями Cydia, но я могуне перезапустить приложение, которое мы хотим.Я пробовал это из каталога / User / Applications, а также / Applications, что, как мне показалось, может иметь значение, но не радует.Может кто-нибудь предложить возможное решение, или я трачу свое время?Я вставил XML из моего файла plist ниже.

   <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>com.MVFieldguide.launchd</string>
<key>ProgramArguments</key>
    <array>
    <string>/Applications/Field Guide 2010.app/Field Guide 2010</string>
    </array>

<key>RunAtLoad</key>
    <true/>

<key>KeepAlive</key>
    <dict>
        <key>SuccessfulExit</key>
        <true/>
    </dict>

Ответы [ 2 ]

3 голосов
/ 08 мая 2011

Это не будет работать, потому что приложения App Store не хранятся в папке «Приложения».Я могу думать о двух вариантах.

  1. Установить AppLinks в Cydia.Это создаст символические ссылки для каждого приложения App Store и поместит их в / var / mobile / AppLinks.Затем в файле plist укажите путь к приложению как

    /var/mobile/AppLinks/Field Guide 2010/Field Guide 2010

  2. Вместо обычной установки приложения на iPad вы можете получить ipa из Xcodeи извлеките пакет .app.Затем вручную установите его в / Applications /, и вы сможете использовать свой launchd plist так, как он у вас есть.

Я рекомендую первый вариант, поскольку он позволит вам обновить приложениене помещая пакет .app вручную в папку «Приложения».Использование первой опции вообще не изменит ваш рабочий процесс для обновления приложения.

Кроме того, просто имейте в виду, что если вы сделаете это, вам придется удалить plist перед обновлением приложения, чтобы закрыть его,поскольку я не думаю, что вы можете обновить приложение во время его работы.

1 голос
/ 15 июля 2012

iOS 6.0 может иметь какое-то исправление для блокировки устройства в режиме ... Я НЕ ЗНАЮ (NDA)

взломанная iOS 5.1 все еще может делать следующее:

используйте приложение с идентификатором пакета ....

вы можете открыть калькулятор с помощью com.apple.calculator .... нет необходимости в папках!

вот скрипт, который вы вставили впапка launchd ...

Сначала установите приложение Open из cydia, чтобы вы могли использовать команду терминала "open com.apple.calculator"

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Disabled</key>
    <false/>
    <key>Label</key>
    <string>com.perceptdev.tink</string>
    <key>ProgramArguments</key>
    <array>
        <string>open</string>
        <string>com.orbitusrobotics.thegatekeeper</string>
        <string></string>
    </array>
    <key>RunAtLoad</key>
    <true/>
    <key>StartInterval</key>
    <integer>10</integer>
    <key>WatchPaths</key>
    <array/>
</dict>
</plist>
...