2016-12-07 3 views
0

내가 스위프트 3.타이머가 알 수없는 이유로

의 I이 응용 프로그램을 쓰고 있어요 방법에 간단한 알람 시계 응용 프로그램을 쓰고 있어요 위해, 잠시 후 발사를 연기 시작, 나는 timer 세트가 60 초 동안 화재가 발생할 때마다 경보가 설정되었는지 확인한 다음 경보를 발합니다.

이 응용 프로그램의 목적은 내 조명을 내 홈 킷 연결 표시등을 켭니다. 로컬 알림을 설정하는 방법을 사용할 수없는 이유는 실행될 때 조명을 켜는 코드를 실행할 방법이 없기 때문입니다.

휴대 전화를 잠글 때 응용 프로그램이 열려 있으면이 응용 프로그램이 백그라운드에서 실행되도록 설정되어 있습니다 (사과가 허용하는 것처럼).
이것은 오랜 시간 동안이라도 시뮬레이터에서 완벽하게 작동합니다. 너무 멀리 앞서서 알람을 설정하지 않으면 내 휴대 전화에서도 작동합니다. 그러나 응용 프로그램을 밤새 휴대 전화에두면 거의 작동하지 않습니다.

이 디버깅하려면 응용 프로그램에서 텍스트 파일을 만들고 시간을 확인할 때 해당 텍스트 파일에 시간을 기록하도록 timer을 설정하십시오.

밤늦게까지 타이머가 밤새 계속 작동하는지 확인할 수 있도록이 작업을 수행했습니다.

내 결과가 여기에 있습니다.

지난 밤에, 나는 4am에 자러 가고, 8am를 위해 경보를 설정했다. (나는 위대함을 안다, 하하) 텍스트 파일에서, 응용 프로그램을 실행할 때 타이머가 좋은 시간 30 분, 매분마다 계속해서 실행되었다.

읽기 쉽게하기 위해 스크린 샷을 업로드했습니다. 이 모든 순간을 기록했다 방법

http://imgur.com/a/lPAZD

알 수 있습니다.

그러나 밤늦게 타이머가 1 분마다 멈추고 더 강렬 해지기 시작했습니다. 타이머가 5:25 am, 5:53 등 다음, 5:13 am에서 발사하는 방법

http://imgur.com/a/8Emd9

알 수 있습니다.

지난 몇 밤 동안 이런 일이 발생했으며 어떻게해야할지 모르겠다.

나는 모든 문자를받지 못하고있다. 매분마다 발사하기로되어있는 타이머가 무작위로 발사 될 것이라고 생각할만한 것이있다.

이 타이머가 매분 안정적으로 작동하는지 확인할 수있는 방법이 있습니까?

여기까지 작성해 주시면 감사하겠습니다. 이것은 첫 번째 응용 프로그램이며 Apple의 배경 제한 사항을 해결하기위한 투쟁입니다.
감사합니다.

+1

불행히도 iOS는 장기 실행, 시간 예약 백그라운드 작업에 적합한 플랫폼이 아닙니다. 어딘가에 서버를 사용하여 필요한 시간에 앱에 자동 푸시 알림을 보내면 앱을 백그라운드에서 실행하여 표시 등을 끌 수 있습니다. 또한 Xcode 디버거에서 실행 중일 때 배경 실행 제한이 일시 중지되므로 시뮬레이터와 장치 간의 차이점을 확인하게됩니다. – Paulw11

+0

그래서 자동 푸시 알림을 보내면 코드를 실행하여 표시등을 켤 수 있습니까? 그게 서버에서 콘텐츠를 다운로드하는 것으로 제한되어 있다고 생각했습니다. 그게 사실이 아니라면 위대한 것입니다! – Jolaroux

+1

'didReceiveRemoteNotification' 메소드에서 원하는 코드를 실행할 수 있습니다. 백그라운드 실행 시간 제한을 존중해야합니다. – Paulw11

답변

0

귀하의 접근 방식은 비 시동입니다.Apple은 애플리케이션을 백그라운드에서 계속 실행하도록 허용하지 않습니다. 그것은 사용자의 배터리를 급하게 낭비합니다. 로컬 알림을 설정하려고합니다. 당신은 미래에 언제든지 꺼질 수 있도록 설정할 수 있습니다.

최근 iOS 버전에서는 배터리를 절약하기 위해 타이머가 작동하는 시간을 조정합니다. 배경에서 타이머의 간격을 격렬하게 변경하는 것에 대해서는 구체적으로 알지 못합니다. 그러나 그 일은 분명히 들립니다.

+0

메인 포스트를 편집해야하지만,이 응용 프로그램은 실제로 알람이 울리면 내 홈킷 연결 표시등을 켭니다. 따라서 조명을 켜는 데 필요한 코드를 실행할 방법이 없기 때문에 로컬 알림을 설정할 수 없습니다. 이것이 내가이 접근법을 사용한 이유입니다.이 어플리케이션을 사용하는 또 다른 방법을 생각할 수 없습니다. – Jolaroux

+0

다른 방법을 생각해 볼 수 있습니까? – Jolaroux