2017-08-11 8 views
-1

Lorsque mon application est d'abord lancé, le niveau de la batterie est récupéré correctement par float batteryLevel = [UIDevice currentDevice].batteryLevel. Cependant, lorsque j'essaie de le récupérer plus tard dans mon code, j'ai toujours la même valeur même si le niveau de la batterie a changé. Les appels suivants au [UIDevice currentDevice].batteryLevel retournent toujours le même résultat que le premier, par exemple: si le niveau de la batterie était de 30% lorsque mon application a été lancée, 10 minutes plus tard quand j'essaie de la récupérer à nouveau, je reçois 30% , mais en réalité, le niveau de la batterie est de 40% à ce stade.niveau de la batterie Récupération ne fonctionne que la première fois que je le fais

Est-ce que quelqu'un a une idée pourquoi cela pourrait-il arriver?

+0

titre a changé, la grammaire fixe –

+0

Avez-vous réglé 'batteryMonitoringEna saignée à «OUI»? sinon vous ne serez pas en mesure de voir les * changements *. Voir [ 'batteryMonitoringEnabled'] (https://developer.apple.com/documentation/uikit/uidevice/1620045-batterymonitoringenabled?language=objc) – Honey

+0

fois que j'ouvre mon application, je mets' '' '' batteryMonitoringEnabled'''to 'YES''', si' '' NO''', '' 'batteryStatus''' est' '' '' unknown''', et que la valeur est '' '-1'''', donc je m'assure que je mets il. Cet ivar a-t-il été influencé par un autre facteur? – Wakeen

Répondre

0

Pour surveiller le niveau de remplacement des piles Vous pouvez utiliser la notification d'état de la batterie UIDeviceBatteryStateDidChangeNotification et UIDeviceBatteryLevelDidChangeNotification

Vous pouvez enregistrer votre CV pour recevoir la notification sur le changement comme suit: -

NSNotificationCenter.defaultCenter().addObserver(self, selector: "batteryStateDidChange:", name: UIDeviceBatteryStateDidChangeNotification, object: nil) 
NSNotificationCenter.defaultCenter().addObserver(self, selector: "batteryLevelDidChange:", name: UIDeviceBatteryLevelDidChangeNotification, object: nil) 

Et puis mettre en œuvre le sélecteur méthodes

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

Je le tester, et il ne peut pas résoudre ce problème, je reçois batteryLevel entre deux App, l'un est correct, un autre a cette question que je descripe.Je veux savoir a un facteur l'influencerait? je vérifie la methodList et ivarList, c'est pareil que chaque application, je vérifie aussi l'adresse, c'est pareil, je n'ai aucune idée à ce sujet, merci! – Wakeen