区域监控(地理围栏)消耗电池(iOS)
我已经在我的应用程序中实现了区域监控(地理围栏)消耗电池(iOS),ios,objective-c,iphone,cocoa-touch,cllocationmanager,Ios,Objective C,Iphone,Cocoa Touch,Cllocationmanager,我已经在我的应用程序中实现了CLLocationManager的区域监控功能,它可以工作,但会耗尽我的电池: - - 应该是这样吗 我的代码: 监视器位置ViewController.m(请滚动查看完整代码): 谢谢大家! 您只想监视区域,而不是在后台不断更新它们的位置 试试这个: self.locationManager.desiredAccuracy=kCLLocationAccuracyBest; 是否确实需要将distanceFilter设置为KCLDistanceFilterOne
CLLocationManager
的区域监控功能,它可以工作,但会耗尽我的电池:
-
-
应该是这样吗
我的代码:
监视器位置ViewController.m(请滚动查看完整代码):
谢谢大家! 您只想监视区域,而不是在后台不断更新它们的位置 试试这个:
self.locationManager.desiredAccuracy=kCLLocationAccuracyBest;
是否确实需要将distanceFilter设置为KCLDistanceFilterOne
?这将导致使用更多的电池电量。你可能想尝试将其设置为10米、20米、50米甚至100米左右
此外,为了不经常更新位置,请不要:
[self.locationManager startUpdatingLocation];
尝试使用:
[self.locationManager startMonitoringSignificantLocationChanges];
所有这些都有助于减少电池的使用。当您将“精度”和“距离”过滤器设置为可能的最高设置时,电池将耗尽
编辑:
由于应用程序的用途,无论你做什么,都会消耗大量电池。我以前解决过类似问题的方法是使用NSTimer创建算法或公式,NSTimer每x分钟触发一次,以更新用户的位置。(但仅当区域移动x米时才更新区域)
- 在启动NSTimer之间停止位置更新,这样您就不会经常更新位置
- 当计时器启动时,恢复位置更新,抓取大约10个位置(这样您就可以得到一个准确的位置),然后关闭位置更新,直到下一次计时器启动
[self.locationManager startUpdatingLocation];
[self.locationManager startMonitoringSignificantLocationChanges];