2012-04-24 4 views
1

x 분 동안 사용하지 않으면 사용자를 자동으로 로그 아웃 할 수있는 타이머 등을 만들고 싶습니다. 나는 뱅크 오브 아메리카 (Bank of America) 애플리케이션이하는 것과 같은 방식으로하고 싶다. BofA 응용 프로그램이 수행하는 방식은 응용 프로그램이 백그라운드에 배치 되어도 여전히 시간을 추적합니다. 시간 제한에 도달하면 로그 아웃 중임을 알리는 알림이 팝업됩니다.iOS 자동 로그 아웃

응용 프로그램이 백그라운드로 들어갈 때 타이머가 일시 중지되지 않고 어떻게 수행 될 수 있습니까?

답변

2

아마도 가장 간단한 방법은 AppDelegate에 NSNotificationCenter을 등록하여 모든 (또는 특정 발신자) 보낸 사람의 모든 이벤트를 수신하는 것입니다.

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(resetTimer) name:nil object:nil]; 

당신은 당신이 (심지어 일부 응용 프로그램에서 발생하지, 즉, 메모리 경고) 통지의 톤을 얻을 것이다으로 nameobject 매개 변수 nil 전달에 조심해야합니다. 특정 이벤트 이름 및/또는 객체 목록을 알고 있거나 그 목록에서 볼 수 있다면 대신에 관찰 할 것입니다. 당신의 resetTimer 방법에서

, 당신은 단순히 (즉, timerStart = [NSDate now];)

위의 단계 것/시간 이전 타이머를 무효화 일부 logout 메서드를 호출하고 현재 날짜에 바르를 설정하는 새로운 하나를 생성합니다 포 그라운드에있는 동안 앱을 관리하십시오.

앱이 백그라운드로 설정되면 타이머가 작동을 멈 춥니 다. 그러나 앱이 포 그라운드로 돌아 오면 [NSDate now]timerStart iVar 사이의 델타를 계산할 수 있습니다. 델타가 일정 간격보다 큰 경우 logout 메소드를 호출합니다. 그렇지 않은 경우 resetTimer으로 전화하여 타이머를 다시 시작할 수 있습니다. 당신이 백그라운드로 앱이 사용자가 로그 아웃 할 예정임을 알려하려면

편집

, 당신은 UILocalNotification를 사용할 수 있습니다. 응용 프로그램이 백그라운드로 들어갈 때 경고하도록 예약 할 수 있습니다. 응용 프로그램이 포 그라운드로 들어 오면 해당 알림을 취소하고 위에서 언급 한 단계를 수행 할 수 있습니다.

+0

이 방법은 내 생각 이었지만 응용 프로그램이 백그라운드에있는 동안 사용자가 시간을 초과하면 알림 센터 알림을 고려하지 않았습니다. – Bot