Swift 4 Track电池电量

时间:2018-08-16 09:49:25

标签: ios swift timer background observers

我正在尝试在自己的应用中跟踪手机的电池电量。目的是,它将每x分钟存储一次时间和百分比,并且始终在更改级别时存储它。 我知道如何使用以下代码获取BatteryLevel(也许还有状态):

UIDevice.current.isBatteryMonitoringEnabled = true

var batteryLevel: Float {
    return UIDevice.current.batteryLevel
}

在我的代码中效果很好。 还有可能监视变化的时刻:

NotificationCenter.default.addObserver(forName: NSNotification.Name.UIDeviceBatteryLevelDidChange, object: nil, queue: nil, using: batteryLevelChanged)
func batteryLevelChanged(notification: Notification) -> Void {
    print(batteryLevel) // I am just printing, the stuff with the txt file doesn't matter
}

计时器的工作方式如下:

var timer: Timer! = Timer.scheduledTimer(timeInterval: 60, target: self, selector: #selector(timerFunction), userInfo: nil, repeats: true)

然后有一个名为timerFunction的函数,该函数也像上面的另一个函数一样给出当前百分比。 func updateTimer(){     打印(batteryLevel) } 实际上,print只是用于将新条目保存到文本文件中的占位符,这在问题的上下文之外是很长的功能。

一切正常,但是我陷入了一个非常愚蠢的错误,我不知道如何解决它: 不幸的是(幸运的是,对于手机和系统的其余部分),系统会在一段时间(大部分3-6分钟)后停止在后台运行该应用程序。这对系统有利,但对应用程序非常不利。 您知道如何在后台运行这两个任务(监视百分比是否变化并每2分钟运行一次)的好主意吗?

0 个答案:

没有答案