Как перезагрузить приложение, если оно неожиданно завершено
Текст обновления Skype содержит следующее:
Автоматическое перезапуск приложения, если неожиданно отключено
Как можно выполнить это через SDK?
Ответы
Ответ 1
Насколько я знаю, некоторые приложения можно запускать в фоновом режиме и их можно перезапустить в конкретном случае. Это из документов Apple
https://developer.apple.com/library/ios/#documentation/CoreLocation/Reference/CLLocationManager_Class/CLLocationManager/CLLocationManager.html#//apple_ref/doc/uid/TP40007125
Если вы запустите эту услугу и ваше приложение будет завершено, система автоматически возобновит приложение в фоновом режиме, если придет новое событие. В таком случае словарь параметров передается в приложение: метод didFinishLaunchingWithOptions: метод вашего делегата приложения содержит ключ UIApplicationLaunchOptionsLocationKey, чтобы указать, что ваше приложение было запущено из-за события местоположения.
Мое мнение таково: Skype перезаписывается с помощью механизма удаленных уведомлений.
Обновление
Хорошо, я думаю, что нашел что-то. @Malek_Jundi был наполовину прав. Ваше приложение должно завершиться с ненулевым кодом выхода, но оно должно быть зарегистрировано как приложение VoIP.
Поскольку приложения VoIP должны оставаться включенными для приема входящих вызовов, система автоматически перезапускает приложение, если оно выходит с ненулевым кодом выхода. (Это может произойти в тех случаях, когда в памяти есть давление памяти, и ваше приложение прекращается в результате.) Однако прекращение приложения также освобождает все его сокеты, в том числе тот, который используется для поддержания соединения с VoIP-сервисом. Поэтому, когда приложение запускается, ему всегда нужно создавать свои сокеты с нуля.
http://developer.apple.com/library/ios/#documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/AdvancedAppTricks/AdvancedAppTricks.html#//apple_ref/doc/uid/TP40007072-CH7-SW12
Ответ 2
Skype выполняет именно это:
- Регистрирует TCP-сокеты для VoIP.
- Вход в систему.
- При отличном от нуля коде выхода приложение будет перезапущено iOS (поскольку приложения VoIP должны оставаться включенными для приема входящих вызовов, система автоматически перезапускает приложение, если оно выходит с ненулевым кодом выхода.).
- Затем он сразу же запускает фоновое задание (повторно запущенные приложения остаются заблокированными).
- Затем он регистрирует его в качестве входа для VoIP.
- Он возвращается в систему.
Ответ 3
насколько я знаю, его невозможно перезапустить, вы можете убить свое приложение с помощью exit(1);
, но Apple этого не допустит и будет отклонено. возможно, вы немного обойдетесь, удалив некоторые виды из mainViewController и добавьте его снова и reset данные и содержимое.. но сделав реальный перезапуск, я так не думаю.
Ответ 4
Не уверен, что скачал Skype, но - к сожалению, нет способа перезапустить приложение. Даже нет выхода для выхода из приложения. (для отказа, пожалуйста, обратитесь этот раздел ссылки "Не оставляйте программно" )
Ответ 5
Вопрос в том, почему вы хотите это сделать?, если ваш ответ: вы хотите сделать приложение для запуска в "iPad Kiosk", поэтому, если он разбился, вам нужно, чтобы приложение автоматически перезапустилось, а затем, что будет работа для вас поставлена iPad в режиме Kiosk ", и ОС автоматически перезапустит приложение в случае сбоев.
Взгляните на:
http://www.webascender.com/Blog/ID/447/How-to-Setup-Kiosk-Mode-Lock-Your-iPad-to-Just-One-App
Приветствия,