2017-08-11 62 views
-1

当我的应用程序第一次启动时,电池电量可通过float batteryLevel = [UIDevice currentDevice].batteryLevel正确检索。但是,当我尝试在代码中稍后检索它时,即使电池电量发生变化,我也会得到相同的值。检索电池电量仅在我第一次使用时才起作用

[UIDevice currentDevice].batteryLevel的后续调用总是返回与第一个调用相同的结果,例如:如果我的应用程序启动时电池电量为30%,10分钟后当我尝试再次检索时,我也获得30% ,但实际上,此时电池电量为40%。

有没有人有任何想法为什么会发生这种情况?

+0

标题改变,语法固定 –

+0

你有没有设置'batteryMonitoringEna流血'到'是'?否则你将无法看到*更改*。请参阅['batteryMonitoringEnabled'](https://developer.apple.com/documentation/uikit/uidevice/1620045-batterymonitoringenabled?language=objc) – Honey

+0

每次我打开我的应用程序,我将'''batteryMonitoringEnabled''设置为''' 'YES''',如果'''NO''',''''''''''''''''''''''''''''''''',所以我确定我设置了'''''它。这个伊娃受到其他因素的影响吗? – Wakeen

回答

0

要监视变化电池电量您可以使用电池状态通知UIDeviceBatteryStateDidChangeNotificationUIDeviceBatteryLevelDidChangeNotification

可以按如下方式注册您的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

相关问题