2012-10-10 2 views

답변

5

distanceFilter 속성은 배터리 수명에 영향을 미치지 않거나 극히 미미한 영향을줍니다. 모든 것은 델리게이트에 대한 호출을 그것이 이동하는 모든 n 미터로 제한합니다. 배터리 수명을 줄이려면 gps로하기를 원한다면 GPS를 켜고 매 n 초마다 판독 한 다음 다음 판독까지 다시 끄는 것이 좋습니다. 나는 타이머를 사용할 것이다. 이 또한 백그라운드에서 작업 할 경우 다음 단계를 수행

  1. 을하면 앱의 PLIST 파일에서 필요한 배경 모드 키에 "위치 업데이트 응용 프로그램 등록"를 추가합니다. 앱이 백그라운드에서 활성 상태를 계속 확인 만료 것이 바로 전에 위치 관리자를 시작하고 어디 applicationDidEnterBackground :와 방법에

  2. UIBackgroundTaskIdentifier __block bgTask; 
    
    UIApplication *application = [ UIApplication sharedApplication]; 
    
    bgTask = [application beginBackgroundTaskWithExpirationHandler:^{ 
        //Prevent from going inactive by starting location update 
        [[ ApplicationContext sharedInstance].coreLocationController startUpdatingLocation ]; 
        [application endBackgroundTask:bgTask]; 
        bgTask = UIBackgroundTaskInvalid; 
    }]; 
    
        dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ 
        while (YES) { 
         if ([[UIApplication sharedApplication] applicationState] == UIApplicationStateActive) { 
         break; 
        } else { 
        //DO something in the background 
        } 
    
    } 
    }); 
    

    그런 짓을. 이렇게하면 앱이 항상 백그라운드에서 실행되므로 GPS를 켜고 끄면 간헐적으로 위치를 확인할 수 있습니다.

+0

+1 좋은 답변! 그게 내가 찾고 있던거야! 백그라운드에서 위치 업데이트! 감사! – CainaSouza