2012-02-11 5 views
0

배터리에 대한 영향을 고려하여 사용자가 "멀티 태스킹/배경"처럼 항상 내 앱의 기능을 원하는지 결정할 수 있습니다. 실행 "또는 앱이 포 그라운드에있을 때. 이 스레드를 읽기 : iPhone 멀티 태스킹 - '위치'서비스 업데이트를 만드는 방법 "사용자 선택 사항"

How do I get a background location update every n minutes in my iOS application?

는 나에게 멀티 태스킹 기능을 사용하기위한 사용자 옵션을 제공하는 가장 좋은 방법이 될 수있는 일에 대해 몇 가지 아이디어를 주었다. 나는이 딜레마를 고려한 누군가가 그것에 대해 "가장 좋은 방법"을 제안 할 수 있기를 희망한다.

문제 - 위치 멀티 태스킹은 UIBackgroundModes 항목을 '위치'로 설정하여 plist를 통해 사용할 수 있습니다. 이것은 응용 프로그램 전체 및 영구적입니다. 함수를 NSUserDefault에 대응시키는 방법?

잠재적 인 용액 A이 - 내 제안은 이런 식입니다 : 그러나

- (void)applicationWillResignActive:(UIApplication *)application { 
    if ([[NSUserDefaults standardUserDefaults] boolForKey:@"wantsBackgroundLocationEventProcessing"]) { 
     //Continue using the location subsystem 
    } else { 
     self.locationManager = nil; //Custom setter does all required cleanup 
    } 
} 

, 내 두려움이 경우 응용 프로그램이 여전히 위치 이벤트를받을 것입니다, 그것은 단순히 사실 수 없습니다 배터리 수명에 미치는 영향은 여전히 ​​존재합니다.

런타임 중에 UIBackgroundModes '위치'를 선택하는 방법에 대한 아이디어가 있습니까?

답변

1

plist의 설정은 iOS에 필요한 경우 위치 업데이트가 필요할 때만 알려줍니다. 더 나은 이해를 위해 서류 here을 확인하십시오.

[locationManager startUpdatingLocation]은 더 이상 필요하지 않을 때 위치 변경을 계속 업데이트하며 [locationManager stopUpdatingLocation]을 사용하여 배터리를 절약합니다.

을 사용하거나 [locationManager startMonitoringSignificantLocationChanges]를 사용하여 중요한 변경이 발생할 때 알림을받습니다.

+0

그래서 기본적으로 "제안 A"를 수락합니다. 배경을 입력 할 때 위치 업데이트를 끄면 내 앱이 적극적으로 등록되지 않고 plist 설정에 관계없이 위치 시스템이 배터리를 소모합니다. 나는 실제로이 방법으로 작동하는지 확인해 왔지만, 실제로 시스템이 실제로 꺼져 있는지, 아니면 내 앱 (장치에 다른 앱이 없다고 가정)에 대해서 확실하지는 않습니다. 나는이 대답이 정확하다고 믿는다 - 당신은 후자를 확인할 수 있습니까? – SG1

+0

대답이 '예'인 경우 [locationManager stopUpdatingLocation]을 먼저 사용하고 locationManager를 놓습니다. – Allen

+0

내 모든 테스트는 자신 옳았는지 확인합니다. 내가 참조한 문서는 모호했습니다. 그러나 올바른 대답을 알았으니 이제 진실을 진술합니다. 감사! – SG1