2012-05-14 2 views
2

에있을 때 나는이 나를 도울 수 밖에 전문가가 희망 NSTimer가 실행 유지 :응용 프로그램은 배경

내가 시간을 봤는 있지만, 계속 실행 할 수있는 방법이 있다면 정보를 찾을 수 없습니다 앱이 백그라운드에서 실행 중일 때 NSTimer가 활성화되어 있습니까?

문제 시나리오는 버튼 클릭시 카운트 다운 타이머를 설정해야한다는 것입니다. 왼쪽 시간은 버튼의 제목으로 표시됩니다 (02:34:45). 응용 프로그램이 백그라운드로 들어가거나 일시 중지되었을 때 내 타이머가 계속 실행되는 방법 알람 시간 (예 : 2 시간, 3 분)은 무엇입니까?

감사합니다.

+0

거기에 배경 실행에 대해 뭔가가 있다고 생각하지만 ... 당신이 applicationWillResignActive : app에 datetime을 저장하면 더 좋을 것이라고 생각합니다. 대리자의 메서드를 호출 한 다음 applicationDidBecomeActive : 메서드에서 남은 시간을 다시 계산하십시오. 행운을 빈다. ;) –

+0

고마워. .. 나는 그것이 효과가 있다고 생각한다. :). u는 그 유일한 해결책이라고 생각합니까, 아니면 다른 대안을 위해서 발굴 할 수 있습니까? – Gaurav

답변

4

알람을 위해 사용하는 경우 가장 좋은 방법은 지역 알림을 사용하는 것입니다. 그렇게하면 백그라운드 처리 모드를 사용할 필요가 없습니다.

앱이 백그라운드 (앱 대표의 applicationWillResignActive 또는 applicationDidEnterBackground)에 들어가면 타이머에 남은 시간을 확인하십시오. 그리고 먼 미래에 그에 대한 로컬 알림을 예약 : 앱이 다시 활성화 될 때

NSTimeInterval timeUntilNotification = ... 

UILocalNotification *localNotif = [[UILocalNotification alloc] init]; 
localNotif.fireDate = [[NSDate date] dateByAddingTimeInterval:secondsUntilNotification]; 
localNotif.soundName = UILocalNotificationDefaultSoundName; 

[[UIApplication sharedApplication] scheduleLocalNotification:localNotif]; 

cancelAllLocalNotifications 모든 알림을 취소해야합니다.