2011-02-03 64 views
4

我對iPhone應用程序開發有點初學者,但我試圖製作一個應用程序,它基本上每隔一段時間就會更新一次您的位置,當它不在前臺時,這樣我就可以映射一個人的位置,當他/她啓動一個應用程序。我以爲我可以使用startMonitoringSignificantLocationChange,因爲它在應用程序處於後臺時起作用,但事實證明這是非常不準確的。我真的希望能夠設置一個時間間隔,例如,每隔10分鐘就會更新位置,但我不知道如何去做。有任何想法嗎?替代startMonitoringSignificantLocationChanges?

+0

如果您想追蹤用戶啓動應用程序時的位置,爲何不在應用程序啓動時啓動位置服務? – 2011-02-04 08:36:32

回答

3

你可以只使用startUpdatingLocation但只要確保你的CLLocationManager的屬性設置:

  1. 使用distanceFilter明智的:不是檢查位置更新每隔X分鐘,只是告訴定位管理器更新你每200/300米(取決於你的用戶是徒步還是駕駛)。

  2. desiredAccuracy也應該被設置爲100米左右(看在頭文件中聲明的常量),所以您的應用程序將不會耗盡電池..

您的應用程序不會被重新啓動如果遇難,但只要它留在後臺,它(即位置經理的代表)將繼續收到locationManager:didUpdateToLocation:fromLocation:

希望有所幫助。

5

閱讀background location documentation在蘋果網站在這裏你有

一種選擇是宣佈你的應用爲要求連續位置更新。

一個應用程序可以聲明自己爲 需要連續的後臺位置 更新。需要定期 位置更新,無論是在 前臺和後臺應用程序,應加 的UIBackgroundModes關鍵的 Info.plist文件和 此鍵的值設置爲包含 位置字符串數組。此選項爲 ,旨在用於提供 特定服務(例如導航 服務)的應用程序,這些服務涉及始終將 的位置通知 。在應用程序的Info.plist文件 中存在鍵 告訴系統它應該允許 應用程序按照需要在 的背景下運行。

這會得到預期的結果,因爲您的應用程序將能夠跟蹤用戶走動的位置,但是您需要知道這是最耗電的選項,並且它通常被認爲是最不理想的選項。然而,如果你想跟蹤某人的步行,這就是你需要做的事情。

但是。你說你只想每10分鐘左右更新一次。在這種情況下,您最好不要使用此策略,而應使用重要的位置更新。這些將在您的應用程序關閉時重新啓動您的應用程序,但正如您所說,它們不是很準確。讓它們變得更好的訣竅是一旦應用程序獲得重要的位置更新,就可以立即開始正常的位置更新,並且在應用程序再次被暫停之前,您應該有足夠的時間來改善位置(通過發送更多更新)。

這不會是完美的,但它會比僅僅使用重要的(即細胞塔)更改更好。

相關問題