1

我的應用程序註冊後臺位置更新(不是重大更改,我需要更多的粒度比公里)停止CoreLocation後臺更新

這部分工作正常。我只想停止應用程序已在後臺60分鐘後的更新。我現在的做法是在我的CLLocationManager委託中調用stopUpdatingLocation

不過,我不確定如果這實際上將接受背景更新位置停止我的應用程序,或者如果它,但會忽略他們。理想情況下,除了用戶活動後的一小段時間外,我不希望我的應用程序對電量消耗負責。

蘋果的文檔往往會寄給我這個圈子。正當我認爲「在後臺執行代碼」即將泄漏答案時,它會將我引導至「位置感知編程指南」。正確的時候,這個人將要回到「在後臺執行代碼」。 :)

+0

注意:我對重大更改位置更新不感興趣。我在城市和郊區進行了廣泛的測試,即使經過3公里的旅行,我也會得到0次更新。我希望獲得高質量的位置數據,但在應用程序使用期間的有限時間內可能會持續一小時。我只想確認是否'''stopUpdatingLocation'''實際上會停止GPS/wifi無線電三角測量/三邊測量。謝謝! :) –

回答

1

我不知道你的應用程序是否有在這個總控制,但對於stopUpdatingLocation的文檔做說明如下......

禁用事件傳遞給接收器禁用的選擇相應的硬件(從而降低功耗)時,沒有客戶需要的位置數據

這將表明應您的應用請求的背景位置數據的只有一個,而你要求它停止GPS接收器將禁用相應的哈日爲了節省電力,我想這是你要找的。

我可以建議是,你能的電能記錄設置 - >開發,然後運行你的應用程序的一個小時左右到一個地步,你認爲GPS是禁用的,運行一個小時,然後比較儀器的用電量。這應該爲您提供更清晰的畫面。

+0

謝謝你的指針。我會給你一個鏡頭。需要一段時間才能確切知道我的應用是否運行良好,但值得花時間進行投資。我只希望Apple的文檔中有一個明確的答案,說明如此重要的事情。他們真的試圖讓人們進入重大變革(可以理解,因此,電池方式),但有太多的應用程序想知道離開用戶一兩個街區是怎麼回事。 –

0

調用stopUpdatingLocation確實會停止GPS等,但如果您將此調用放入您的CLLocationManager delegatelocationManager:didUpdateToLocation:fromLocation,那麼它可能永遠不會被調用。

記住,每當更準確的位置或(根據活性距離濾波器)顯著不同位置可用此方法時,纔會執行。如果設備根本沒有移動,並且影響準確性的情況也不會改變,它可能會在幾個小時內(我已經驗證了幾分鐘自己),並且GPS也會保持啓用這麼長時間。

對於只能在前臺工作的應用程序,您可以使用60分鐘的NSTimer,但對於在後臺運行的應用程序,距離我目前找到的工作解決方案最近的應用程序是預定的UILocalNotification。但即使這樣,用戶也需要在應用程序重新啓動並關閉GPS之前確認警報。

也許beginBackgroundTaskWithExpirationHandler:是更好的解決方案的關鍵,但我還沒有完全弄明白。