2014-09-01 2 views
1

무한정 실행중인 앱을 얻으려고합니다. 내부 앱을 개발 중이므로 사과 승인이 중요하지 않습니다. 나는이 자습서를 사용하여의 VoIP 응용 프로그램을 시뮬레이션을 포함한 몇 가지 다른 것들을 시도했습니다 iOS - 무한정 백그라운드에서 앱을 실행하려고합니다.

..

http://www.raywenderlich.com/29948/backgrounding-for-ios

은 결국 나는이 장소 온라인이 코드에

[application beginBackgroundTaskWithExpirationHandler:^{}]; 

를 실행 beginBackgroundTaskWithExpirationHandler에서 내 애플리케이션 대리인의 내부에서 느린 루핑 함수를 호출하십시오. application:didFinishLaunchingWithOptions

-(void)caller{ 

    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 3 * NSEC_PER_SEC), dispatch_get_main_queue(), ^{ 
     NSTimeInterval timeRemaining = [UIApplication sharedApplication].backgroundTimeRemaining; 
     NSLog(@"%f", timeRemaining); 
     [self caller]; 
    }); 
} 

이 메시지는 3 초마다 백그라운드 시간을 기록합니다. 그것은 내 애플 리케이션을 종료 할 때이 작업을 수행합니다. 나는 180 (3 분)에서 결국 0으로 카운트 다운을 참조하십시오.

그런 다음 로깅은 0 만 무기한 유지됩니다. 배경 시간이 0에 도달하면 내 프로세스가 실행되지 않을 것이라고 생각합니다.

누구나 무슨 일이 일어나고 있는지 알고 계신가요?

+0

다른 앱, 특히 메모리 집약적 인 앱 (* The Simpsons Tapped Out *은 테스트 용 즐겨 찾기 중 하나입니다.)을로드하면 앱이 * 백그라운드로 계속 작동 할 수도 있습니다. 그러면 앱이 언로드됩니다. – Paulw11

+1

Xcode에서 실행 했습니까? 나는 그 행동이 디버거를 통해 앱을 실행함으로써 영향을받을 것이라고 믿는다. 장치에 응용 프로그램을 설치 한 다음 장치에서 직접 실행하면 동작이 변경 될 수 있습니다. – Rob

+0

내 장치에서이 장치를 실행했지만 컴퓨터에 연결되었습니다. 내가 xcode를 통해 로그 메시지를보고 – hamobi

답변

0

beginBackgroundTaskWithExpirationHandler을 사용하고 Xcode에서 앱을 시작하면이 UIBackgroundTaskIdentifier의 동작이 변경됩니다 (Xcode가 앱을 계속 유지합니다). Xcode의 디버깅 콘솔에 로그 메시지가 나타나면 앱이 Xcode를 통해 장치에서 시작되었음을 의미합니다.

앱이 기기에 설치되었으므로 Xcode에서 '중지'버튼을 누르거나 기기에서 스프링 보드를 통해 앱을 수동으로 종료하여 앱을 중지합니다. 앱이 실행되고 있지 않다고 확인되면 이제 기기 자체의 앱 아이콘을 탭하여 앱을 다시 실행할 수 있습니다. 어떤 식 으로든 Xcode에 연결되지 않아 시작되어야합니다.

Xcode의 "Device Organizer"으로 이동하여 실제 기기의 콘솔을 열어서 앱이 Xcode를 통해 실행되지는 않지만 로그 한 내용을 계속 모니터링 할 수 있습니다. 나는 당신이 예상했던 것처럼 백그라운드 작업이 만료 될 것이라고 생각합니다.