自iOS 9以来,背景位置消耗的电池过多

时间:2015-11-04 17:13:34

标签: ios objective-c background gps ios9

我有一个在后台运行的应用程序收集GPS位置并将其发送到服务器。 该应用程序自iOS 7或之前就已存在。

当M7出现时,我设法在设备停止或移动时停止/启动背景位置。这样,应用程序只消耗2-6%的电池,位置监控100%有效。所以我有一个背景GPS位置监控应用程序非常适合电池使用。

直到iOS 9才真实。

相同的应用程序,消耗约5%,现在在iOS 9 / 9.1中消耗30-60%。 我尝试了很多东西,但我没有看到任何电池使用差异的原因。 我确实意识到电池百分比是一个相对的信息,但我正在测试,因为iOS 9出来了,它真的耗尽了更多的电池。

我在iOS 8.2 / 8.4上运行该应用程序,它只消耗2-6%。在iOS 9 / 9.1上运行的相同版本的应用程序消耗大约40%! M7工作正常,GPS监听器按预期停止/启动。但是iOS 9上的电池使用情况很疯狂。

如果我根本没有启用GPS位置,那么在iOS 9上运行的应用程序消耗大约3%。但是如果我启用GPS定位一段时间然后根据M7停止它,则电池使用率会超高。所以问题实际上是GPS定位。

当我调用[MyLocationManager stopUpdatingLocation]时,看起来iOS并没有关闭GPS硬件。

这是我初始化我的位置管理器的方式:

locationManager = [[CLLocationManager alloc] init];  
locationManager.delegate = self;  
locationManager.desiredAccuracy = kCLLocationAccuracyNearestTenMeters;  
if ([locationManager respondsToSelector:@selector(allowsBackgroundLocationUpdates)]) {  
    [locationManager setAllowsBackgroundLocationUpdates:YES];  
}  
if ([locationManager respondsToSelector:@selector(pausesLocationUpdatesAutomatically)]) {  
    locationManager.pausesLocationUpdatesAutomatically = NO;  
    locationManager.activityType = CLActivityTypeOther;  
}  

当我想开始时,我打电话给:

[locationManager startUpdatingLocation];

为了阻止它,我打电话给:

[locationManager stopUpdatingLocation];

我重复一遍:

  1. 我的位置管理员没有一直在运行!我根据M7的报告开始和停止它!

  2. 相同版本的应用程序在早期iOS版本上消耗的电量要少得多。

  3. 其他人注意到了吗? 自iOS 9以来,CLLocationManager是否存在错误或其他问题? 我现在应该接受相同的应用消耗更多的电池吗? Apple是否通过显示更多的电池使用来谴责使用背景GPS位置的应用程序?

    我该怎么办?

    欢迎任何想法/建议!

    PS:我不是在质疑背景位置是否是一件好事。我们有合法用途。

0 个答案:

没有答案