2014-04-08 7 views
6

iOS 앱이 제대로 실행하려면 사진에 액세스 할 수있는 권한이 있어야합니다.iOS 앱이 개인 정보 설정 변경으로 인해 죽었다는 것을 알 수있는 방법이 있습니까?

다음을 발견했을 때 내 앱이 개인 정보 보호 설정 변경에 어떻게 반응하는지 테스트했습니다. 설정 앱으로 이동하여 내 앱의 개인 정보 보호 설정을 변경할 때 (내 설정 또는 해제), 내 앱이 경고없이 사망합니다.

나는 내 장치의 콘솔에서 이러한 로그를 발견 :

Apr 8 15:01:50 iPad Preferences[5924] <Warning>: ########### Quitting application (xxx) in response to privacy settings change. 
Apr 8 15:01:50 iPad com.apple.launchd[1] (UIKitApplication:xxx[0xc7cb][6039]) <Notice>: (UIKitApplication:com.edupad.itoochdev[0xc7cb]) Exited: Killed: 9 
Apr 8 15:01:50 iPad backboardd[30] <Warning>: Application 'UIKitApplication:xxx[0xc7cb]' exited abnormally with signal 9: Killed: 9 

을 그리고 난 내 응용 프로그램 위임에 applicationWillTerminate:을 구현하지만 응용 프로그램이 살해되기 전에,이 호출되는 것 같지 않습니다.

내 앱이 삭제되기 전에 알림을 받기 위해 구현해야하는 관련 문서를 찾을 수 없습니다. 이 문제를 해결할 수 있다면 어떨까요?

PS : 나는 applicationDidEnterBackground:을 구현할 수 있지만 (A) 사용자가 설정 앱으로 신속하게 전환하여 개인 정보 설정을 변경하거나 (B) 사용자가 원하는 경우 다른 UX를 제공하고 싶습니다. 계속 이동하고 잠시 후 앱으로 돌아 가지 않을 것입니다.

PS 2 : 이런 종류의 것들을 테스트하는 중이라면 앱이 Xcode를 통해 실행되면 안됩니다. 그렇지 않으면 충돌이 발생할 것입니다. sigkill.

+0

항상 백그라운드로 전환 한 후 앱이 종료 될 수 있다고 예상해야합니다. 사용자가 신속하게 개인 정보 설정에 들어가더라도 다른 것을 기억하거나 다른 앱으로 이동할 수 있습니다. 따라서 배경과 전경을 입력하는 데 소요 된 시간을 확인하는 것만 큼 가능성이 있습니다. – gnasher729

답변

0

일반적으로 앱을 종료하기 전에 상태를 저장하거나 코드를 정리하려는 경우 블록 beginBackgroundTaskWithExpirationHandler을 정의해야합니다.

개인 정보 설정이 iOS6 이상으로 변경 될 때 일어나는 일에 대해 이야기하는 Apple의 WWDC 2012 문서를 살펴볼 수 있습니다. 간단히 말해서, SIGKILL이 전송되기 전에 beginBackgroundTaskWithExpirationHandler이 호출되어 클린업 코드를 처리 할 수 ​​있다고합니다.

같은 줄에 Stack Overflow에 대한 또 다른 설명이 있습니다. 누군가 그것을 찾아서 여기에 연결하면 도움이 될 것입니다.

+0

이것은 iOS 10에서는 더 이상 적용되지 않는 것 같습니다. –