2017-01-30 78 views
2

我想知道startmonitoringsignificantlocationchanges用於提供位置的信息是GPS還是Wifi/Internet?我的理解是,它使用蜂窩或無線網絡,知道設備是否有明顯的移動,但我不知道的是,在選擇位置時,是否僅使用GPS來提取位置。startMonitoringSignificantLocationChanges用於提供位置的信息

我的發現是:我在城市列車中旅行了30公里,但沒有在背景中獲得任何位置,在此旅程中我的Wifi和Cellular數據已關閉。因此,請告訴我們重要是否僅基於GPS提供位置。

回答

1

過去構建位置應用程序,我假設GPS只在調用startUpdatingLocation()時使用。在仔細檢查文檔之後,Apple沒有明確說明significantLocationChanges是否可以使用GPS,但它是一種省電選項,他們的文檔指出它「需要存在蜂窩硬件」,這使我非常確定我的假設(和你的)是正確的。如果有一位肯定知道的硬件專家,我會留下一點點。你想要的文檔:https://developer.apple.com/reference/corelocation/cllocationmanager

0

像所有的位置功能一樣,它使用了cell,wifi和GPS的組合。細胞的使用是主要。這個想法是儘量減少使用GPS,以防止電池電量不足。

你當然不能指望這與單元格關閉工作;的確,如果你的代碼正確地檢查了significantLocationChangeMonitoringAvailable關閉的單元格,我會直觀地預期答案是false

(另請注意,你不會得到任何事件,除非你有一個代表一個位置管理器)。

0

正如這個答案「Hows does Significant Location Change work?解釋說:」(在WWDC從2013 - 2015年的影片)的顯着位置變化監測使用了一種叫做Cell Tower Triangulation的技術。

您可以將其視爲幾乎與GPS三角測量相同的機制,不同之處在於蜂窩硬件將用於測量距附近蜂窩塔的距離,而不是觸發GPS硬件以從實際衛星獲取信號。

以我的經驗,我已經注意到,這種方法給出的準確性約。千米。它不使用GPS硬件,因此電池效率更高。這對粗略的位置更新很有用。參見WWDC 2013會議Harnessing iOS to Create Magic in Your Apps,演示者通過參考此技術。

+0

我的印象是,它使用蜂窩三角測量來生成位置變化事件,並啓動GPS達10秒鐘,然後使用GPS獲取位置。但使用這種技術,我應該在測試時收到一些位置更新,但我沒有收到任何信息。也許是因爲蜂窩數據和無線網絡關閉了,儘管蜂窩網絡和GPS可用,但它們還不足以提供位置。有沒有任何解釋或這是正常的。 –

+0

在iOS 9+中,您可以使用(requestLocation)[https://developer.apple.com/reference/corelocation/cllocationmanager/1620548-requestlocation] API從GPS硬件獲取單個高精度定位。此後,位置管理器將自動關閉。 還有很多其他的考慮,如更新plist,setAllowsBackgroundUpdates,位置授權等。 另外,不要忘記upvote :) – zakishaheen