我使用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];
不是吗?
答案 0 :(得分:1)
有几点想法:
GPS图标不只是警告他们电池消耗量(虽然在实践中,这是人们在看到图标时首先担心的事情),但同样重要的是,他们的位置也是隐私警告被跟踪。 (为了说明这一点,位置服务设置位于“设置”应用中的“隐私”下。)
您可能会考虑使用重要的变更服务,而不是希望kCLLocationAccuracyKilometer
不会过多地耗尽电池电量,而服务的设计正是出于这个目的而设计的。这也有一个优点,它会在位置发生变化时唤醒您的应用,而标准服务则不会。
另外,我希望有一个不同的颜色图标或一些其他视觉提示,用于重大变更服务与标准服务(有点像地理围栏),因此用户可以区分电池耗尽问题和隐私问题,但我不相信有。