2017-01-30 43 views
0

我想在swift iOS中記錄背景中的位置座標。 當應用程序進入後臺時,我使用startMonitoringSignificantLocationChanges,當它進入前臺時,我使用stopMonitoringSignificantLocationChanges()startUpdatingLocation()。 我已在finishLaunching中正確實例化位置管理器。 一切似乎很好,當iPhone連接到互聯網,但由於某種原因,當沒有互聯網可用,因爲我沒有得到任何位置座標和沒有呼叫didFailWithError沒有位置沒有互聯網的座標顯着位置監控

雖然在前臺它至少給錯誤:Error Domain=kCLErrorDomain Code=0 "The operation couldn’t be completed. (kCLErrorDomain error 0.)"

但對於背景,它甚至不給錯誤,而我走遍30KM。

爲了調試的目的,我使用本地通知來通知我在didFailWithError和didUpdateLocations的回調情況。

與活躍的互聯網連接,它大多工作正常,即使應用程序被殺害或在後臺,但當我嘗試沒有WiFi或蜂窩數據時,我似乎根本得不到響應。如何處理GPS設置並監控用戶的位置,因爲我希望它在後臺自行排序。有沒有解釋這種行爲。如果互聯網不存在,我需要有離線行爲。

感謝

+0

您是否通過將設備置於飛行模式禁用了互聯網連接? – Andrea

+0

你在使用GSM的國家嗎? – shallowThought

+0

是shallowThought。 –

回答

0

從蘋果文檔:

決定區監測的可用性

之前試圖監視任何地區,您的應用程序應該檢查 區域監控是否支持當前設備。以下是 區域監控可能不可用的一些原因:

該設備沒有必要的硬件來支持區域 監控。
用戶拒絕該應用使用區域 監控的授權。
用戶在「設置」應用程序中禁用了位置服務。
用戶在設置應用程序中禁用了後臺應用程序刷新,或者爲該設備或您的應用程序設置了 。
設備處於飛行模式,並且 無法啓動必要的硬件

您所遇到的問題是與「Region Monitoring and Ibeacon」文檔部分這種提取物是一致的。
嘗試通過禁用WiFi並禁用蜂窩數據來更改您的測試。

+0

謝謝@andrea,但我不在區域監控。爲了進行調試,我正在關閉飛行模式幾秒鐘,這給iPhone的印象是單元塔被改變了,它應該給位置管理器代表回叫,但是當設備沒有連接到互聯網或wifi時沒有回叫。我認爲顯着監控的理想行爲是,當Cell塔改變時它應該喚醒GPS,並且如果未能獲得它應該調用didFailWitherror的位置,這不會發生。但是,通過蜂窩數據,它可以在後臺正確授權回調。再次感謝。 –

+0

也許我錯了,但我認爲地區監測是重大地點變化的親密家長。我也對GPS工作持懷疑態度,這種功能用於避免電池耗盡。 :) – Andrea

+0

謝謝..你是對的,他們在節省電池方面很棒。是否有任何解釋說明,如果沒有互聯網或蜂窩網絡,重要位置沒有給予任何回撥,因爲當我的應用程序沒有連接到互聯網時,如果它無法從GPS獲取位置,它應該至少調用didFailwithError,而不是案件。 –