1

CLLocationManager를 사용하여 GPS 데이터를 가져 오는 iOS 애플리케이션을 개발 중입니다.사용자가 Fast App Switcher를 사용하여 앱을 중지하면 CLLocationManager를 중지하십시오.

사용자가 홈 버튼을 누른 다음 빠른 응용 프로그램 전환기를 사용하여 응용 프로그램을 종료 할 때 CLLocationManager를 중지하는 적절한 방법은 무엇입니까?

CLLocationManager를 중지하고 GPS 데이터 폴링을 중지하려면 어떻게해야합니까? 나는 배경에 응용 프로그램을 보낸다 때 , 그것은 여전히 ​​가야 significantLocationChanges : .... 누구는 사용자가 응용 프로그램을 죽이고 때 어떤 코드를 실행하지 못할 일반적으로 원인이 달성 할 수있는 좋은 방법을 알고

편집합니까 , 그래서 응용 프로그램이 배경으로 전송되면 CLLocationManager를 멈출 수 없습니다!

답변

1

AppDelegate에는 applicationWillResignActive라는 메서드가 있습니다. 이 메소드는 앱이 백그라운드로 보내질 때 실행됩니다. AppDelegate에서 CLLocationManager에 대한 액세스 권한이 있으면 바로 중지 할 수 있습니다. 그렇지 않으면 applicationWillResignActive에서 알림을 게시 할 수 있으며 CLLocationManager가 해당 알림을 구독하고 거기에서 처리 할 수있는 클래스를 게시 할 수 있습니다.

후이 같은 알림 :

[[NSNotificationCenter defaultCenter] postNotificationName:@"appWillResignActive" object:nil]; 

그리고 다음과 같이 등록 :

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleResign:) name:@"appWillResignActive" object:nil]; 

다음과 같은 몇 가지 방법

- (void)handleResign: (NSNotification *)notification 
{ 
    // stop CLLocationManager 
} 

편집 : 실행할 경우 코드가 실행되면 AppDelegate의이 메소드에서 해당 코드를 실행할 수 있습니다. UIApplicationWillResignActiveNotification 등을 참조하십시오

- (void)applicationWillTerminate:(UIApplication *)application 
+1

당신은 응용 프로그램 대리인 이외의 클래스가이 이벤트에 응답해야하는 경우 자신의 알림을 게시 할 필요 없어요. – rickster

+0

SteveB, rickster - 응용 프로그램이 백그라운드에서 실행되는 동안 위치 변경이 필요하므로 내 게시물을 편집 했으므로 배경을 입력 할 때 CLLocationManager를 중지 할 수 없습니다. 어쨌든 답변 해 주셔서 감사합니다! – joshi737

+0

그래서 사용자가 앱을 수동으로 종료 할 때만 멈추고 싶습니까? 이 경우 앱의 모든 코드가 실행되지 않아야합니다. 그것은 그런 식으로 죽이는 것입니다. 그 시점에서 어떻게하면 여전히 어떤 일이 일어나고 있는지 확인할 수 있습니까? 앱을 종료 한 후 로그 파일을 출력하고 활동을보고 있습니까? – SteveB