2014-10-20 2 views
-2

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

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

killall myapp 

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

То, что я хотел бы знать, как я могу определить, когда выход пользователя по приложение с домашней кнопкой и тем самым запустить NSTask, которые отправляют команду killall? Я знаю, что NSTask не разрешается Apple, но это приложение для джейлбрейка, которое не предназначено для публикации в Apple Store.

Также эта ошибка действительно меня раздражала ... in viewDidLoad У меня есть несколько NSTask и метод, которые проверяют, существует ли каталог. Считаете ли вы, что эти вещи могут запретить запуск приложения после убийства в последнее время и замораживание устройства? Или это из-за того, что приложение работает от имени root, и есть что-то особенное, чтобы позволить устройству перезапустить приложение в этой ситуации?

Заранее благодарим за вашу помощь!

+1

Да, это, безусловно, багги код. Но кто знает, не видя ничего? – Droppy

+0

Да, я знаю, но это всего лишь некоторые базовые методы NSTask и Obj-C для проверки существующего каталога, поэтому я не разместил ни одного примера кода. Я попытаюсь удалить эту часть кода, чтобы убедиться, что это корень проблемы. Для первого вопроса вы знаете, как обнаружить выход приложения? – Synny

+0

Ну, используя 'NSTask', чтобы проверить наличие каталога, ваша первая ошибка. Для таких вещей существуют методы API. – Droppy

ответ

0

Ok первого вопроса я нашел, как: я разместивший метод NSTask в didEnterBackground (AppDelegate класс) убивающее приложение при выходе пользователя приложение

На втором вопросе, который я действительно дон Не знаю ... Я удалил метод, помещенный в viewDidLoad, чтобы узнать, не является ли причиной этой проблемы, но ничего, как только я убью приложение в последнее время и попытаюсь его перезапустить, устройство застыло. Потому что нет ничего в методе viewDidLoad, я думаю, что проблема вызвана правом root ... NStask в DidEnterBackroung решает эту проблему

1

Прежде всего, хочу отметить, что использование NSTask - это не всегда answ э. Вы можете использовать NSFileManager. для управления файлами и каталогами, и вы можете использовать exit(0) для завершения процесса.

Насколько ваш реальный вопрос, ваше приложение работает от имени root? Когда приложениям сообщается закрыть iOS, они отправляются сигналом SIGSTOP от SpringBoard. Поскольку SpringBoard работает как мобильная, эти сигналы отправляются мобильным пользователем, что означает, что корневые приложения их не получат. Это означает, что всякий раз, когда корневому приложению предлагается завершить работу, он просто игнорирует запрос и продолжает выполнение. Чтобы исправить это, есть ключ в Info.plist, который вы можете изменить.

Перейдите и установите UIApplicationExitsOnSuspend в boolean true в вашем Info.plist и проверьте, устраняет ли это вашу проблему.

Смежные вопросы