【发布时间】:2019-05-24 08:11:31
【问题描述】:
我想在 iPhone 电池电量耗尽时执行一些代码。
func applicationWillTerminate(_ application: UIApplication) { 会被调用吗?如果没有,那么是否存在任何其他方法来跟踪这一点?提前致谢。
【问题讨论】:
-
你的意思是在它耗尽电池之前的一段时间,对吧?达到 20% 时有节电通知
我想在 iPhone 电池电量耗尽时执行一些代码。
func applicationWillTerminate(_ application: UIApplication) { 会被调用吗?如果没有,那么是否存在任何其他方法来跟踪这一点?提前致谢。
【问题讨论】:
不支持此功能,您必须决定何时电池电量过低以至于需要运行代码。
您可以做的是收听通知batteryLevelDidChangeNotification,这是通过激活监控来完成的,请参阅isBatteryMonitoringEnabled
如文档中所述,通知每分钟发送不超过一次,因此您必须确定电池电量低到足以被视为几乎耗尽,然后执行代码。
我不知道这可能是什么,从个人经验来看,我看到我的手机在低于 5% 的情况下还能存活很长时间,但也看到它们在低于 10% 后不久就死机了
【讨论】:
可以使用以下代码sn-p:
func startObservingBatteryDrainage(){
if UIDevice.current.isBatteryMonitoringEnabled && (UIDevice.current.batteryState == .unplugged || UIDevice.current.batteryState == .unknown){
if UIDevice.current.batteryLevel < 0.1{
NotificationCenter.default.addObserver(self, selector: #selector(funcWhenBatteryIsAlmostDrained), name: UIDevice.batteryLevelDidChangeNotification, object: nil)
}
}
}
@objc func funcWhenBatteryIsAlmostDrained(){
//do stuff
}
【讨论】: