Любой способ предотвратить полное закрытие приложения iOS Enterprise после сбоя?

Предисловие: я пишу приложения для iPad для музея, которые будут использоваться в качестве "постоянных" информационных киосков. Им нужно все время запускать 1 приложение. Мой вопрос относится к этой ситуации, а не к распространению в App Store или беспокойству о внешних пользователях, поскольку это корпоративные приложения. Я единственный разработчик, и я все еще новичок в разработке приложений, работаю в сжатые сроки и не всегда могу исправить каждую ошибку, прежде чем приложение будет запущено. Наши гости иногда тестируют приложение. Это iPad 2 и новая iOS 5.1. Некоторые приложения работают на платформе Cocos2d ver 2.0.

Мне нужно, чтобы гости музея не могли даже попасть на рабочий стол iPad. После того, как я узнал о SBStoreDemoAppLock и с металлическим каркасом. Очевидно, что я хочу и работаю над тем, чтобы мои приложения никогда не ломались. Тем не менее, когда iPad работает круглосуточно и иногда сталкивается с более чем 2000 детей, которые в день ударяют, ударяют и бьют по ним, приложение иногда падает.

Поскольку я работаю над улучшением кодирования, чтобы не допустить возникновения сбоев, есть ли способ предотвратить полное закрытие приложения в случае сбоя? Имеется в виду, что в случае сбоя может отображаться простой imageView с надписью "свяжитесь с ИТ"? Я знаю, что это звучит противоречиво, потому что, если приложение должно аварийно завершить работу, оно будет аварийно завершено, но я не знаю, как еще это выразить.

В качестве альтернативы, и даже менее вероятно, есть ли способ автоматически перезапустить приложение после сбоя? Я посмотрел на подход схемы URL и добавив это к applicationWillTerminateОднако это не рекомендуется с тех пор, как iOS 4 вышла на сцену. Я предпочитаю избегать джейлбрейка, но если кто-то знает очень простой способ сделать это с помощью приложения Cydia, я хотел бы услышать об этом как о крайней возможности.

У меня iPad полностью ограничен, так как он доступен на вкладке настроек, но дети (и взрослые) сегодня могут найти все, что можно испортить, такие как инвертирование цветов, включение вспомогательного зума и т. Д.

1 ответ

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

Другие вопросы по тегам