检索电池电量仅在我第一次使用时才起作用
问题描述:
当我的应用程序第一次启动时,电池电量可通过float batteryLevel = [UIDevice currentDevice].batteryLevel
正确检索。但是,当我尝试在代码中稍后检索它时,即使电池电量发生变化,我也会得到相同的值。检索电池电量仅在我第一次使用时才起作用
对[UIDevice currentDevice].batteryLevel
的后续调用总是返回与第一个调用相同的结果,例如:如果我的应用程序启动时电池电量为30%,10分钟后当我尝试再次检索时,我也获得30% ,但实际上,此时电池电量为40%。
有没有人有任何想法为什么会发生这种情况?
答
要监视变化电池电量您可以使用电池状态通知UIDeviceBatteryStateDidChangeNotification
和UIDeviceBatteryLevelDidChangeNotification
可以按如下方式注册您的VC收到关于更改通知 -
NSNotificationCenter.defaultCenter().addObserver(self, selector: "batteryStateDidChange:", name: UIDeviceBatteryStateDidChangeNotification, object: nil)
NSNotificationCenter.defaultCenter().addObserver(self, selector: "batteryLevelDidChange:", name: UIDeviceBatteryLevelDidChangeNotification, object: nil)
,然后实现选择方法
func batteryStateDidChange(notification: NSNotification){
// The stage did change: plugged, unplugged, full charge...
}
func batteryLevelDidChange(notification: NSNotification){
// The battery's level did change (98%, 99%, ...)
}
+0
我测试了它,它不能解决这个问题,我得到了两个应用程序之间的电池电量,一个是正确的,另一个有我描述的这个问题。我想知道有什么因素会影响它吗?我检查methodList和ivarList,它与每个应用程序相同,我也检查地址,它一样,我不知道它,谢谢! – Wakeen
标题改变,语法固定 –
你有没有设置'batteryMonitoringEna流血'到'是'?否则你将无法看到*更改*。请参阅['batteryMonitoringEnabled'](https://developer.apple.com/documentation/uikit/uidevice/1620045-batterymonitoringenabled?language=objc) – Honey
每次我打开我的应用程序,我将'''batteryMonitoringEnabled''设置为''' 'YES''',如果'''NO''',''''''''''''''''''''''''''''''''',所以我确定我设置了'''''它。这个伊娃受到其他因素的影响吗? – Wakeen