繁体   English   中英

电池电量不足时如何暂停(和恢复)后台位置监控?

[英]How to pause (and resume) background location monitoring when low battery?

我正在编写适用于iOS 7.1(iPhone)的位置跟踪应用程序,该应用程序需要在电池电量低于30%时停止或暂停后台位置监视。 电池电量改善时,位置监视应在后台恢复。 我怎样才能做到这一点? 我正在使用重要的位置更改更新(CLLocationManager API方法)进行后台位置监视。

谢谢!

根据startMonitoringSignificantLocationChanges的文档

如果启动此服务,并且随后终止了您的应用程序,则当新事件到来时,系统会自动将应用程序重新启动到后台。 在这种情况下,传递给应用程序委托的application:didFinishLaunchingWithOptions:方法的选项字典包含键UIApplicationLaunchOptionsLocationKey,以指示由于位置事件而启动了您的应用程序。 重新启动后,您仍然必须配置位置管理器对象并调用此方法以继续接收位置事件。 当您重新启动位置服务时,当前事件将立即传递给您的委托。 此外,甚至在您启动位置服务之前,位置管理器对象的location属性也会使用最新的位置对象进行填充。

第一步 :-

因此,当应用程序在后台启动时,请检查UIApplicationLaunchOptionsLocationKey的启动选项键。然后,您将知道位置事件的应用程序启动原因。

该应用程序在后台跟踪位置更新,已被清除,现在已重新启动。 在这种情况下,词典包含一个键,该键指示由于发生新的位置事件而重新启动了该应用程序。

第二步:-获取电池%

//This will give you the battery between 0.0 (empty) and 1.0 (100% charged)
[[UIDevice currentDevice] setBatteryMonitoringEnabled:YES];
float batteryLevel = [[UIDevice currentDevice] batteryLevel];

//If you want it as a percentage, you can do this:
batteryLevel *= 100;

第三步:-检查应用程序状态(如果需要的话)

如果应用程序在后台运行,请执行下一步

[UIApplication sharedApplication].applicationState == UIApplicationStateBackground

第四步:-停止监视重大位置更改

应用电池百分比检查,如果少于30%,则停止监视位置更新。

如果您发现电池电量超过30%并且未启用位置监控,请启动startMonitoringLocationUpdate

该检查可以在didUpdateToLocation:fromLocation并且可以在应用程序处于活动状态时进行,或者根据您的应用程序要求进行。

希望这对您有帮助... !!!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM