2013-09-04 2 views
1

VOIP 애플리케이션의 경우 서버에 10 분마다 setKeepAliveTimeout을 사용하여 PING 패킷을 보냅니다. 모든 것이 제대로 작동하지만 응용 프로그램이 포어 그라운드가되면 처리기를 중지하는 방법을 모르겠습니다.응용 프로그램이 foreground가 된 후에 setKeepAliveTimeout 처리기가 호출되지 않도록 하시겠습니까?

예를 들어 다음을 설정하는 응용 프로그램이 전경을 온 후에도 기능 이상

- (void)backgroundHandler 
{ 
    printf("10 minute time elapsed\n"); 
    // do some action... 
} 

가 호출되고, 내가 애플 문서에 읽고 : 여기에 내가

[[UIApplication sharedApplication] setKeepAliveTimeout:600 handler:^{ [self backgroundHandler]; }]; 

배경 핸들러 시간 제한을 설정하는 방법입니다 그것을 처리하기 위해 nil 핸들러. 나는 applicationWillEnterForeground에서 아래와 같이 시도했다.

[UIApplication sharedApplication] setKeepAliveTimeout:600 handler:nil]; 

아직도 나는 10 분마다 전화를 받고있다. 이것을 처리하는 방법, 플래그 만 사용해야합니까.

정말 도움이됩니다.

답변

2

타이머를 중지하려면 clearKeepAliveTimeout을 호출해야합니다. setKeepAliveTimeout:은 VoIP 연결을 유지하도록 설계되었으므로 주기적으로 호출됩니다.

4

- (void)applicationWillEnterForeground:(UIApplication *)application 
{ 
    // Called as part of the transition from the background to the active state; here you can undo many of the changes made on entering the background. 
    [[UIApplication sharedApplication] clearKeepAliveTimeout]; 
} 
처럼 그것을 할 수 있습니다