2012-04-16 4 views
1

서문 : "영구적 인"안내 용 키오스크로 사용할 박물관 용 iPad 앱을 작성합니다. 그들은 1 개의 앱을 항상 실행해야합니다. 내 질문은 App Store 배포가 아니라 이러한 상황에 관련되며 엔터프라이즈 앱인 사외 사용자에 대한 걱정입니다. 나는 유일한 개발자이고 여전히 앱 개발에 익숙하지 않으며 엄격한 마감 시간 내에 작동하며 앱이 바닥에 있어야하기 전에 항상 모든 버그를 수정할 수는 없습니다. 우리 손님은 때로는 앱의 초기 테스터입니다. 이들은 iPad 2와 새로운 iOS 5.1을 실행합니다. 일부 앱은 Cocos2d ver 2.0 프레임 워크를 실행 중입니다.충돌 후 iOS Enterprise 앱이 완전히 종료되지 않도록하려면 어떻게해야하나요?

필자는 박물관 이용객이 iPad의 데스크톱을 사용하지 못하게해야합니다. SBStoreDemoAppLock에 대해 알아보고 금속 프레임 인클로저를 사용하여 mobileconfig 파일을 사용하여 홈 버튼을 비활성화했습니다. 분명히 나는 ​​내 앱이 결코 부서지기를 바란다. 그러나 iPads가 하루 24 시간 연중 무휴로 운영되고 때로는 2000 명이 넘는 어린이가 도청하고 스 와이프하여 하루 종일 뛰는 경우 앱이 가끔 충돌합니다.

더 좋은 코딩 작업을 통해 충돌을 막을 수 있습니다. 충돌을 경험할 경우 앱이 완전히 닫히는 것을 방지 할 수있는 방법이 있습니까? 그것이 충돌 할 필요가 있다면, "contact IT"라는 단순한 imageView가 표시 될 수 있습니까? 그게 모순 된 것처럼 들리네. 왜냐하면 앱이 추락 할 필요가 있다면, 충돌 할 것이기 때문이다. 그러나 나는 그것을 어떻게 말해야할지 모르겠다.

크래시 후 앱을 자동으로 다시 시작하는 방법이 있을까요? URL 체계 접근 방식을 살펴본 결과 applicationWillTerminate에 추가되었지만 iOS 4가 등장한 이후에는 더 이상 사용되지 않습니다. 나는 jailbreaking을 피하는 것을 선호하지만 누군가 Cydia 앱으로 이것을하기에 죽은 쉬운 방법을 알고 있다면, 나는 최후의 수단으로 그것을 듣고 싶다.

나는 설정 탭에서 사용할 수있는 한 완전히 제한된 아이 패드를 가지고 있지만, 오늘 아이들 (및 성인용)은 색상 반전, 보조 확대/축소 켜기 등과 같은 모든 일들을 망쳐 놓을 수 있습니다.

+0

실제 충돌 (캐치되지 않는 예외와 반대)은 앱에 전송되는 특정 신호 (IIRC, SIGBUS 또는 SIGSEGV)로 표시됩니다. 실제로이 신호를 잡아서 처리 할 수는 있지만 매우 까다 롭습니다. 이런 일이 발생하면 런타임에 * 아무것도 * 올바른지 (IIRC, malloc조차도)에 의존 할 수 없기 때문입니다. 이런 신호 처리기에서 당신이 효과적으로 무엇을 할 수 있는지 잘 모르겠습니다. –

+0

작동 여부는 잘 모르겠지만 KeepAlive를 사용하려면 launchd를 살펴보십시오. 자세한 정보는 Mac OS X에서'man launchd'와'man launchd.plist'를보십시오. – v1Axvw

+0

@ lef2 : 앱 plists는 출시 된 plists되지 않습니다. –

답변

0

가장 먼저 떠오르는 것은 NSSetUncaughtExceptionHandler를 사용하여 앱의 모든 오류를 차단하는 것입니다. 핸들러에서 수행하는 작업은 가능한 최소한의 코드를 포함해야하며 예외 처리 중 오류가 아이디어이므로 미리로드해야하며 잘 테스트해야하는 리소스가 있어야합니다.

+0

크래시가 catch되지 않은 예외는 아닙니다. –

+0

@KevinBallard - 그래서 내가 '첫 번째 일'이라고 말했지. :) –

관련 문제