0

我正在使用 UIBackgroundModes = location 来跟踪用户位置并将数据发送到我的服务器。

实际上,我已经:

self.bgLocationManager=[[CLLocationManager alloc] init];
self.bgLocationManager.delegate=self;
self.bgLocationManager.desiredAccuracy = kCLLocationAccuracyKilometer;
self.bgLocationManager.distanceFilter = 250.0;
[self.bgLocationManager startUpdatingLocation];

我已经看到 kCLLocationAccuracyKilometer 使用 Cell Tower 技术作为默认方法来发现用户位置。

当我的应用程序进入后台状态时,GPS 图标仍然处于活动状态,这可能会让用户担心电池消耗。另外,我看到其他应用程序(例如谷歌纵横)可以关闭 GPS 图标。

开发跟踪用户位置的应用程序的正确方法在哪里?

编辑:要使用 startMonitoringSignificantLocationChanges,我需要将我的代码替换为:

self.bgLocationManager=[[CLLocationManager alloc] init];
self.bgLocationManager.delegate=self;
self.bgLocationManager.desiredAccuracy = kCLLocationAccuracyKilometer;
self.bgLocationManager.distanceFilter = 250.0;
[self.bgLocationManager startMonitoringSignificantLocationChanges];

我不是吗?

4

1 回答 1

1

几个想法:

  1. GPS 图标不仅是为了警告他们电池消耗(尽管在实践中,这是人们看到该图标时首先担心的事情),而且同样重要的是,还有一个隐私警告,表明他们的位置正在被跟踪。(为了说明这一点,定位服务设置位于“设置”应用程序的“隐私”下。)

  2. 与其希望这kCLLocationAccuracyKilometer不会过多地消耗他们的电池,不如考虑使用重大变更服务,该服务正是为此目的而设计的。这还有一个优点,即它会在位置更改时唤醒您的应用程序,而标准服务不会。

顺便说一句,我希望有一个不同的颜色图标或其他视觉提示,用于显着更改服务与标准服务(有点像地理围栏),因此用户可以区分电池耗尽问题和隐私问题,但是我不相信有。

于 2013-06-26T13:21:55.760 回答