iOS定位服务访问和系统频繁定位

我注意到iPhone上的频繁定位似乎比监控iOS访问( https://developer.apple.com/reference/corelocation/clvisit )的应用程序使用更less的电池。

在iPhone上频繁的位置可以在手机上通过设置 – >隐私 – >定位服务 – >系统服务 – >频繁地点查看。

我想知道来自CLLocationManager的访问监控服务是否与iOS常用位置相同,或者是否与苹果使用的系统不同。 如果苹果使用相同的服务,为什么它不会对电池产生任何影响?

这两个API旨在用于不同的目的。

CLLocationManager API

此API旨在根据您的应用程序指示的要求通知您的应用程序的位置信息。 当您的应用程序收到位置数据时,您可以select一些特定条件,并且您的应用程序将继续接收该数据,直到不再需要为止。 例如,Uber应用程序会在打开应用程序时请求位置数据,以便您安排行程,并在您的行驶过程中继续请求。

频繁地点 / CLVisit API

相比之下,频繁地点的不同之处在于,它并不一致地向位置报告位置数据。 相反,应用程序可以指示他们想知道用户是否访问了特定的位置,如果用户这样做,则iOS会通知应用程序。 地点往往有些粗糙。 这将在StarBucks应用程序的例子中使用,当你到达附近的StarBucks应用程序可能会告诉你有关限时销售附近的商店,以鼓励你停止英寸许多这些应用程序,用户通常会select一个预先定义的位置列表,他们将标记为“最喜欢的”位置/商店,应用程序将使用该数据通知用户。

电池寿命

由于这两种API的运行方式不同,电池使用的差异变得明显。 使用CLLocationManager,我们开始并不断向应用报告准确/粗略的位置。 除了蜂窝三angular测量和WIFI热点位置数据之外,通常还使用GPS。

但是对于CLVisit,我们通常只在初次访问(或离开)期望的位置时通知应用程序一次。 由于这个iOS不需要唤醒应用程序,并且如果当前位置没有大致离我们感兴趣的报告更近或更远,就做任何额外的处理。 该设备可以使用蜂窝三angular测量和WiFi热点位置数据获得粗略的位置。 GPS通常不需要这个级别的位置细节。 由于您的蜂窝无线电和WiFi通常是“永远在线”,因此不会耗用任何额外的电力来使用这两种方法进行位置检测。

但是,如何使用蜂窝和WiFi来确定我在哪里呢?

解释你的设备如何从蜂窝或wifi信号的位置超出了这个问题的范围。 但是,这是一个很好的文章,解释了这些信息是如何派生出来的。 Google如何知道我在哪里? – security.stackexchange.com