[英]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.