2014-11-03 276 views
2

我需要在特定的時間跟蹤用戶在後臺的位置。後臺任務是否可以在下午7點至11點開始?背景位置

到目前爲止,我一直能夠實現這一目標的唯一方法是讓後臺任務持續運行,這似乎是一種不好的方法,因爲它大大消耗電池。

我已經設置了CLLocation管理器的精確度和距離過濾器,以上述時間以外節省電池:

[locationManager setDesiredAccuracy:kCLLocationAccuracyThreeKilometers]; 
[locationManager setDistanceFilter:2000.0f]; 

我然後7-11pm之間改變這一回:

[locationManager setDesiredAccuracy:kCLLocationAccuracyBest]; 
[locationManager setDistanceFilter:10.0f]; 

我已關閉locationManager.pausesLocationUpdatesAutomatically,因爲這似乎會在用戶停留15-20分鐘後終止後臺任務 - 當用戶再次移動時不會恢復。

有沒有更好的方法來最大限度地減少這些時間以外的電池消耗。

另外,我是否正確認爲startMonitoringSignificantLocationChanges只在您移動超過500m時才進行位置更新 - 如果情況確實如此,那麼在晚上7-11pm時它將不夠準確。

任何想法?

回答

1

這是一個很常見的問題,不幸的是,您不可能精確地控制背景執行的時間和方式。

關於你的問題,如果只startMonitoringSignificantLocationChanges當設備移動大約500平方米的更新也是正確的,它是在docs說,這你可能閱讀:)

The significant-change location service delivers updates only when there has been a significant change in the device’s location, such as 500 meters or more. 
+0

感謝,對如何延長電池的任何想法在這些時間之外,如果後臺任務必須連續運行? – 2014-11-03 16:29:05