Подтвердить что ты не робот

Как перезагрузить приложение, если оно неожиданно завершено

Текст обновления Skype содержит следующее:

Автоматическое перезапуск приложения, если неожиданно отключено

Как можно выполнить это через SDK?

4b9b3361

Ответ 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

Приветствия,