타이머 앱을 가지고 있습니다. 사용자가 타이머를 종료 할 때까지 무기한으로 계산됩니다. 기본 iOS 시계 스톱워치와 매우 유사합니다.타이머 앱이 IOS에 의해 종료되지 않도록하려면 어떻게해야합니까?
책임있는 배경 앱에 관한 기사를 읽었습니다. 나는 UI 변화가 일어나지 않고 앱이 백그라운드에서 전경으로 돌아 왔을 때 타이머를 다시 시작할 때 타이머를 멈춘다. 앱은 30 분마다 로컬 알림을 보내 사용자에게 휴식을 취하도록 상기시킵니다.
문제 : 내 앱이 몇 시간 (2-6 시간 정도) 후에 종료되고 현재 타이머 및 정보가 손실됩니다.
것들 나는 시도했다 :
-as는 내가 타이머 UI도 배경에있는 동안, 카운트 업 또한 타이머 실행했다 전에 (책임있는 배경 응용되는 지침을 따르지 내 응용 프로그램을 변경 전술). 내 응용 프로그램은 많은 메모리를 사용하지 않거나 집중적 인 작업을 수행하지 않기 때문에 문제가 해결 될 것이라고 생각했습니다.
-I 또한 ApplicationWillTerminate의 현재 타이머 (NSUserDefaults)의 데이터를 저장 한 다음 DidFinishLaunchingWithOptions에서 복원하려고 시도했습니다. 그것은 작동하지 않는 것 같습니다. ApplicationWillTerminate가 호출 될 경우 데이터를 저장하고 응용 프로그램이 다시 시작될 때 복원 할 것이기 때문에 내 응용 프로그램이 강제 종료되는 것과 비슷합니다. 신비.
현재 NSTimer의 시작 시간 인 NSDate를 ApplicationDidEnterBackground에 저장하고 타이머를 무효화하고 타이머를 시작하고 ApplicationWillEnterForeground에서 시작 시간을 복원합니다. 아직도 운이 없다.
이것은 사용자의 아주 작은 부분에 영향을 미치기 때문에 모든 사용자에게 문제가되지 않으므로 혼란 스럽습니다. 저는 여전히 절름발이 버그이기 때문에 그것을 고치고 싶습니다. (아이폰 5에서) 나 자신과 마주 쳤기 때문에, 아이폰의 오래된 메모리가 부족하거나 다른 문제가있는 것은 아닙니다.
이것은 정말 저를 괴롭혔습니다. 저는 연구를 해본 결과 스택 오버플로에 관한 질문을 상당히 잘 닦아 냈고 저에게 많은 도움을 줄 것으로 보이지 않습니다.
도움이 될만한 질문이 있으시면 언제든지 문의 해주십시오.
OS가 앱을 죽이는 것이 왜 중요한가요? 앱이 실행되는 동안 로컬 알림을 예약 할 수 있으며 사용자는 여전히 앱을 볼 수 있습니다. 현재하고있는 것처럼 시작 시간을 저장할 수 있습니다. 사용자가 앱을 사용하지 않는 경우, 공간과 전원을 사용하여 백그라운드에 앉아있을 필요가 없습니다. – Caleb
사용자가 앱을 시작하면 시작한 이후 경과 한 시간과 앱이 종료되어 정보가 손실 된 것을 확인하기를 원하기 때문입니다. ApplicationWillTerminate가 호출되지 않는다는 문제가 (Wain이 지적했듯이) 생각합니다. 정보가 저장되지 않습니다. 나는 이것을 확실히 테스트하고있다. 나는 이상하게도 그것을 발견한다. 단 몇 시간 만 지나면 내 애플리케이션이 죽을 것이다. 특히 백그라운드에서 아무 일도 일어나지 않기 때문에. – LazerLex