2 votes

Comment puis-je lire le niveau de la batterie d'un MacBook en Swift ?

J'ai vu de nombreux messages ici/sur SO et de nombreux documents sur le site Apple concernant la lecture du niveau de la batterie sur iOS, mais quelle est la meilleure façon de le faire sur un MacBook? Dans le passé, la seule manière que j'ai trouvé pour le faire est avec une commande bash prenant du temps pipée à grep, ce qui semble très inefficace. (comme vu et adapté de, bien que je ne puisse pas localiser la source originale que j'ai lue, ici et ici) Y a-t-il une meilleure façon de le faire de manière programmatique? J'ai également vu cette, mais cela ne semble avoir qu'une version Obj-C. Est-il possible de le faire en Swift?

ÉDIT

En fait, il y a une meilleure façon qui ne prend pas beaucoup de temps (ioreg -l -w0 | grep Capacity montre la charge actuelle et la capacité maximale), mais c'est toujours un script bash apparemment inutile.

0 votes

Pourquoi ne pas faire un lien vers une instance spécifique et expliquer combien de temps cela prend et à quel moment vous cherchez? Et si nous sommes déçus (mais avons un outil qui répond) en 5 secondes et que vous êtes coincé à 500? (De plus, la batterie ne change pas significativement au bout de 15 minutes ou plus, alors pourquoi la vitesse est-elle nécessaire ici?)

1 votes

La vitesse n'était pas vraiment un problème, j'ai simplement pensé qu'il devait y avoir une meilleure façon que d'appeler un script bash. Je mettrai quelques liens dans la question.

0 votes

@bmike a ajouté les liens.

1voto

Jose Chavez Points 645

Oui, cela peut être fait entièrement en Swift. Vous mentionnez que vous avez trouvé une solution sub-optimale en utilisant l'outil de ligne de commande "ioreg". Vous pouvez trouver le code source complet (en C) de l'outil ioreg ici - pour inspiration :

https://github.com/opensource-apple/IOKitTools/blob/master/ioreg.tproj/ioreg.c

Cet outil obtient le niveau de la batterie pour vous en lisant les propriétés des périphériques d'E/S - le niveau de la batterie étant l'une de ces propriétés. Il les lit en utilisant une fonction qui en Swift est disponible sous le nom de IORegistryEntryCreateCFProperties() dans le framework IOKit.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X