2016-08-18 2 views
1

응용 프로그램과 관계없이 매시간 메서드를 트리거하는 방법은 활성 상태이거나 배경 또는 종료됩니다. 메서드는 매시간마다 트리거해야합니다.앱 활성화, 백그라운드 또는 종료에 관계없이 매시간 메서드를 트리거하는 방법

NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:60*60 target:self selector:@selector(callYourMethod:) userInfo:nil repeats:YES]; 

10 분 후에 NSTimer가 작동하지 않는다고 들었습니다.

수있는 하나의 충고 나 방법 로컬 나쁜 생각이 방법에게 아이폰 OS Objecitve-C

+1

확실한 방법이 없습니다. 타이머에 시간 제한이 있다고 말한 사람이나 컨텍스트가 누락되었습니다. 앱이 종료되면 푸시 킷 알림과 같은 외부 트리거를 사용하여 앱을 다시 시작해야합니다. 배경에있을 때와 거의 비슷하지만 깨어 난 더 많은 옵션이 있습니다. PK가 가장 가까워 지긴하지만 100 % 신뢰도는 없습니다. 물론 응용 프로그램은 VoIP 응용 프로그램 이어야만 사용할 수 있습니다. – Avi

+0

매시간 무언가를해야합니까? 모바일 앱의 디자인이 좋지 않기 때문입니다. 이렇게하면 배터리가 소모됩니다. 그리고 사용자가 앱을 죽이면 작업이 완료되지 않습니다. 이 서버 측을 수행하고 필요할 경우 푸시 알림을 사용하여 앱에 푸시하는 것이 더 좋습니다. 또한 VOIP, 오디오, 위치 및 액세서리 앱만 백그라운드에서 실행할 수 있습니다. 백그라운드에서 앱을 실행하도록 이들 중 하나를 잘못 사용하면 앱이 거부됩니다. – rckoenes

+0

타이머는 주 스레드에서 작동합니다. 응용 프로그램이 백그라운드로 들어가면 타이머가 유효하지 않게됩니다. 따라서 응용 프로그램이 백그라운드로 들어가면 같은 작업을 수행 할 수 없습니다. –

답변

0

는 이러한 유형의 작업 관리의 모든 한 시간 트리거하는 방법을 활성화합니다. 응용 프로그램이 포 그라운드 상태에있을 때 사용하도록 설계 되었기 때문에 NSTimer 또는 GCD를 감당할 수 없습니다.

배경에있을 때 앱은 몇 분 후에 타이머와 무효화 방법을 무효화 할 수 있습니다. - 어쨌든 - iOS의 재량에 따라. 시스템이 다른 응용 프로그램을위한 메모리를 확보해야하거나 배터리 소모를 최적화해야하는 경우 응용 프로그램이 일시 중지됨 상태가됩니다.

iOS 8에 도입 된 PushKit Framework의 VoIP 알림을 사용해야 만 폐쇄 또는 일시 중지 상태에서 앱을 각성시킬 수 있습니다.이 유형의 알림은 VoIP 서비스를 구현하는 경우에만 사용해야합니다. 너 앱. 이 프레임 워크는 처음에는 Apple뿐 아니라 StackOverflow와 같은 다른 사이트에도 잘 설명되어 있습니다. VoIP 서비스를 사용하는 앱의 데모를 완벽하게 구현하기 위해 단계별로 안내하는 this tutorial by Pierre-Marc Airoldi을 따르는 것이 좋습니다. 표준 알림은 알림을받을 때 아무 것도하지 않습니다. 알림을 클릭 할 때만 AppDelegate의 메소드가 실행됩니다. 사용자에게 알림을 표시하지 않으려면 메시지없이 보내십시오. 그것은 화면에 표시되지 않지만 수신됩니다.