2011-12-26 75 views
2

我有一個需要在後臺使用基於位置的服務的應用程序。 因此,在info.plist中,我將setrRequired背景模式設置爲「應用寄存器進行位置更新」。 和一切工作正常。以編程方式更改所需的背景模式

我的問題是,我如何禁用它在後臺運行? 是否可以添加選項並讓用戶將其設置爲開/關?

因爲我知道info.plist不能編程改變 所以我該如何做到這一點?

回答

2

關鍵是描述 - 它支持註冊位置更新。所以你所要做的就是告訴你的位置管理器在應用程序進入後臺(或之前)時停止更新,並且它不應該在後臺使用位置更新。

沒有辦法在運行時重新定義應用程序的info.plist功能。

+0

謝謝,我解決了問題 – icefox 2011-12-27 06:08:41

0

傳統上(實際上),您應該在您的應用程序正在使用時將您的位置管理器設置爲-startUpdatingLocation。如果讓它全天運行,這會很快耗盡你的電池。通常你會調用它,獲取你需要的信息,或者更新信息,調用-stopUpdatingLocation。這使得一切都休息,沒有更多的電池消耗。

如果您仍然希望延長電池使用壽命,那麼在滾動到背景時,您的準確度選項非常有限。主要的是-startMonitoringForSignificantChanges。這個位置更新主要依賴於手機塔的切換和三角測量。因此,如果您的用戶沒有移動很遠的距離,或者處於信號接收有限的區域,請不要期望這種背景模式工作得很好。

你其他的後臺選項是-startMonitoringRegion。這使您可以在地點周圍創建一個基於地區的區域,並在您輸入-enterRegion或-exitRegion時收到通知。這些都必須在進入後臺之前設置。他們確實有更好的位置更新的額外好處。改變WiFi,手機信號塔切換,甚至使用位置更新的其他應用程序。操作系統獲取所有位置更新並將其彙集到一起,並使其可用於在操作系統中註冊的任何區域。

您仍然可以選擇在後臺運行位置更新,但您的用戶在使用30分鐘後不會感激他們沒有電池。

祝你好運。有很多例子說明如何在SO和網絡上實現所有這些。訣竅是找到適合你的正確組合。祝你好運。

+0

謝謝,因爲電池壽命,甚至用戶關閉應用程序,GPS圖標仍然存在。所以我想給一個使用可以選擇的選項是gps繼續在後臺運行。 – icefox 2011-12-27 03:58:08

相關問題