2017-01-30 82 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