我正在构建一个需要每分钟轮询服务器的Mac OSX应用程序,如果用户愿意,甚至更少。不幸的是,该服务不支持推送...
无论如何,我想为用户提供两个选项:
如何在Objective C中获得充电器的状态?只有在插入笔记本电脑的情况下,我才真正关心实际的百分比。显然,这对于台式机来说并不重要,所以希望有一个适用于笔记本电脑和台式机的解决方案。
答案 0 :(得分:14)
查看IOPowerSources API。
首先致电IOPSCopyPowerSourcesInfo()
,然后致电IOPSCopyPowerSourcesList()
以获取所有可用电源的列表。 IOPSGetPowerSourceDescription()
将返回包含特定电源信息的字典。根据文档,密钥kIOPSPowerSourceStateKey
描述了“当前的电源。kIOPSBatteryPowerValue
表示电源正在吸取内部电源; kIOPSACPowerValue
表示电源连接到外部电源。”
您还可以在电源随IOPSNotificationCreateRunLoopSource()
更改时设置通知。
(注意:我没有测试任何这些,只是查看了文档。)
答案 1 :(得分:7)
虽然这个问题已经有了一个可以接受我的解决方案的答案,但点击大量破碎的链接却很痛苦。
这是我的解决方案:
IOKit.framework
#import <IOKit/ps/IOPowerSources.h>
代码:
CFTimeInterval timeRemaining = IOPSGetTimeRemainingEstimate();
if (timeRemaining == kIOPSTimeRemainingUnlimited) {
// connected to outlet
} else if (timeRemaining == kIOPSTimeRemainingUnknown){
// time remaining unknown (recently unplugged)
} else if ((timeRemaining / 60) < 30){
// less than 30 minutes remaining
}