2011-10-05 162 views
1

目前,在我的應用程序,這就是我現在做的事:位置更新

  • 當用戶觸發,視圖控制器-A(VC-A)startsMonitoring用戶的GPS位置使用或者startUpdatingLocation或startMonitoringForRegion取決於手機型號
  • VC-A也是CLLocationManager的代表
  • 目前,監控發生在前臺 - 即應用必須正在運行。

爲了獲得位置更新的背景,這是我迄今爲止已經閱讀和理解的...。

  • 分離CLLocationManager委託方法信息一個的NewClass和執行在的NewClass
  • 委託方法VC-A然後應使用的NewClass的一個實例,以啓動監視
  • 時的NewClass接收更新,並且當條件是我通知用戶, - 送localNotification如果應用程序在後臺或打alertSound如果應用程序是在前臺 - 停止監視

我需要做什麼規範ial在AppDelegate.m文件中?

問候。

回答

0

當您的應用進入後臺時,您需要處理回調。我從你的問題中假設你正在對當前設備進行區域監控,並且只是計算出舊設備的位置細節?

如果是這種情況,則需要在AppDel中實現locationManager,並處理-didEnterRegion和-didExitRegion的回調以及-significantLocationChange回調的回調。

我剛剛實現了一個非常類似的設置(但我在舊設備上保留)。關鍵是在AppDel內部創建一個locationManager來處理回調。

如果您的應用程序位於前景中,則用於創建區域或監視器位置的locationManager工作得很好。但是一旦你點擊了背景,你需要觸發-monitorForSignificantLocationChange來保存連擊併爲其處理任何回調。

+0

我依賴於短途旅行的定期更新 - 因此,即使在後臺我也必須使用「startUpdatingLocation」。對於長途旅行,用戶可以選擇使用「startMonitoringSignificantChanges」 - 在iPhone4及更高版本中,用戶可以使用RegionMonitoring。我讀過最後兩篇依賴於手機信號塔,有時讀數可能不準確。回到我的問題,我會接受你的建議 - 但仍然有一個問題。 AppDelegate是否僅啓動/停止監視,而newClass是否實現了didUpdateToLocation:newLocation:delegate方法? ===謝謝。 – Sam

+0

這取決於你如何設置它。從後臺調用AppDelegate中的didUpdateToLocation實現。您可以選擇撥打其他課程來執行其他邏輯,設置新的位置監控類型或任何您需要的選項。 AppDel只是捕捉回調,你做什麼後取決於你。儘管區域監控是基於手機信號塔,wifi和其他應用程序,但它已被證明對我的使用來說足夠準確。 –

+0

在我所在的小鎮裏,沒有足夠的細胞塔......因此,我沒有很好的測試w/RegionMonitoring的經驗。我將不得不失明。但是 - 再次 - 非常感謝 – Sam