2014-12-17 2 views
3

위치를 사용하는 응용 프로그램에서 작업하고 있습니다. 애플리케이션은지도에 경로를 저장할 수 있으며 사용자가 경로를 기록하려는 경우 앱은 사용자 위치를 저장 한 백그라운드에서 작업 한 후지도에 표시합니다. 나는 응용 프로그램의 PLIST에 정의 된 속성 NSLocationAlwaysUsageDescription을 사용 iOS에서 백그라운드의 위치 업데이트 만 때때로

배경에 위치를 저장하려면

NSLocationAlwaysUsageDescription on the app plist

내 문제는 그것이 그러나 때문에의, 사용자가 결코 어떤 경로를 기록하고 싶어있을 가능성이 있다는 것입니다

방법은 애플 리케이션이 배경에 위치를 저장해야한다는 것을 정의하는 방법, 내 애플 리케이션은 항상 배경에 일하는 것 같다 그리고 그것은 너무 많은 배터리를 낭비 때라도 배경에서 작동하지 않을 수 있습니다.

나는 또한 시작하고 내가지도 화면에없는있을 때 위치 업데이트를 피하기 위해 내 viewDidAppear 및 viewDidDisappear 방법에 대한 위치 업데이트를 중지

: I 대해 찾아 봤는데

- (void)viewDidAppear:(BOOL)animated 
{ 
    ... 

    [[SBLocationManager sharedInstance] startUpdatingLocation]; 
    ... 
} 

- (void)viewDidDisappear:(BOOL)animated 
{ 
    [[SBLocationManager sharedInstance] stopUpdatingLocation]; 
    [self.stationProvider stopProviding]; 
} 

하지만 원하는 경우 백그라운드 위치를 설정하는 방법을 찾지 못합니다. 사용자가 앱을 구성하는 동안 백그라운드에서 위치를 "사용/사용 중지"할 수있는 방법이 있는지 알고 계십니까?

도움을 주셔서 대단히 감사합니다. 여기에서보세요! 다른 사람들이 참조 할 수 있습니다 유사한 쿼리가있는 경우 있도록


+0

위치 업데이트에 대해 앱에서 알림을 받기 전에 위치 변경을 구성 할 수 있습니까? – Andy

+0

보기가 사라지면 위치 업데이트를 중지하면 위치가 백그라운드에서 어떻게 업데이트 될 것으로 예상됩니까? –

+0

@Andy 배경에 앱을 놓을 때 거리를 변경한다는 의미입니까? – Thais

답변

0

나는 애플 리케이션에 배터리 낭비를 약간 개선 한 게시물에 대한 답변에 따라 몇 가지 변경을 수행했는데, 테스트가 충분하거나 다른 것을 변경할 수는 있지만 테스트해야한다.

내가 그것에 대해 viewDidAppear 및 viewDidDisappear에 startUpdatingLocation 및 stopUpdatingLocation을 변경 :

- (void)viewDidAppear:(BOOL)animated 
{ 
    ... 

    [self.locationManager setDesiredAccuracy:kCLLocationAccuracyBest]; 
    [self.locationManager setDistanceFilter:kCLDistanceFilterNone]; 

    ... 
} 

- (void)viewDidDisappear:(BOOL)animated 
{ 
    ... 
     [self.locationManager setDesiredAccuracy:kCLLocationAccuracyThreeKilometers]; 
    [self.locationManager setDistanceFilter:99999]; 
    ... 
} 


내가 내을 locationManager에 두 가지 이상의 속성을 추가 누군가를 위해 도움이 될 수 있다면 여기에 내가했던 개선이다 배터리를 절약하기 위해 :

_locationManager.pausesLocationUpdatesAutomatically = YES; 
_locationManager.activityType = CLActivityTypeOtherNavigation; 


그리고 난 당신이지도보기에서 응용 프로그램 가까운했을 때 viewDidDisappear 및 stopUpdatingLocation가 호출되지 않았기 때문에 위치를 방지하고 오류가 중지 발견했다.

- (void)applicationDidEnterBackground:(UIApplication *)application 
{ 
    [self.locationManager stopUpdatingLocation]; 
    ... 
} 

나는이 : 너무 당신을 위해 유용하게 도움을 주셔서 감사합니다 모두 희망 : 그 때문에, 나는에 있다고 덧붙였다!

1

, 답변으로이 추가. 위치 업데이트 떨어져 우리의 reqiurements에 따라 -

가 여기에 배터리 수명을 방지하기 위해 비슷한 질문 Periodic iOS background location updates

, 그것은에 설정해야합니다. 또한 몇 가지 속성이 있습니다. desiredAccuracy와 distanceFilter는 위치 서비스를 자주 호출하지 않도록 설정할 수 있습니다. (주어진 링크에서 언급 한대로)

희망이 도움이됩니다.

관련 문제