如何从连接的iOS设备获取电池充电周期?

我在OS X应用程序中使用MobileDevice.framework,我已经能够获得如何通过USB连接的iOS设备的电池使用AMDeviceCopyValue(设备,域,密钥)函数和参数“com.apple .mobile.battery“的域名和”BatteryCurrentCapacity“的密钥.

我也想得到电池充电周期的数量.我相信这是可能的,因为iBackupBot能够获取这些数据.有人知道这是怎么做到的吗我下载了程序的免费副本,并在iPhone 3GS,iPhone 4S和iPhone 5上进行了测试.它能够抓住所有三个设备的数据.

我已经通过LLDB运行了iBackupBot,并记录了它的每一次使用AMDeviceCopyValue().在这样做的时候,我确定没有收到充电周期数.

解决方法

您可以使用设备的ioreg(IORegistry)转储来获取CycleCount和一堆其他信息.例如,有关iPhone 5S的IORegistry转储,请参阅 here.注意这一节:
+-o AppleD2045PMUPowerSource  <class AppleD2045PMUPowerSource,busy 0,retain count 10>
    | |   |   |   |   {
    | |   |   |   |     "battery-data" = {
                            .....
                            "CycleCount" = 1
        | |   |   |   |     "ChargerConfiguration" = 960
        | |   |   |   |     "DesignCapacity" = 1550
        | |   |   |   |     "BatteryData" = {"BatterySerialNumber"="C0133237ALXFHCWBP","ChemID"=4484,"Flags"=256,"QmaxCell0"=1619,"Voltage"=4051,"CycleCount"=1,"StateOfCharge"=72,"DesignCapacity"=1550,"FullAvailableCapacity"=1573,"MaxCapacity"=1517,"MfgData"=<4330313333323337414c58464843574250000000000000010000010000000100>,"ManufactureDate"="1332"}
        | |   |   |   |     "AtCriticalLevel" = No

iOS上的私有IOKit.framework有一个用于访问所有这些信息的API(您可以查看转储来找出属性名称等,以便能够以编程方式访问它). Erica Sadun有一些open source code,使用私人IOKit功能来访问某些设备硬件信息(没有越狱IIRC),所以也许这将是有帮助的.

至于从Mac抓取这个信息,不知道.如果您有一个在设备上的应用程序,可以从IORegistry提取信息,并将其通过USB发送到Mac.如果您想在设备上安装任何其他软件,就必须找出远程获取ioreg转储的方法.

希望这能让你在某个地方!

相关文章

背景 前端时间产品经理决定使用百度统计,使得 工程B 中原统计sdk-友盟统计,需要被去除。之前尝试去除...
结论: alloc负责分配内存和创建对象对应的isa指针; init只是返回alloc生成的对象。 所以alloc后,多次...
更新 如果UI愿意把启动图切割成n份,按一定约束在launchscreen.storyboard中进行排版,启动图效果会更好...
最近在看一本书《Effective OC 2.0》,今天看到有个tip是OC适中循环各自优劣性,作者最终推荐此块循环。...
// // ViewController.m // paintCodeTestOC //gif // Created by LongMa on 2019/7/25. // #import &a...
背景介绍 一般情况下,出于省电、权限、合理性等因素考虑,给人的感觉是很多奇怪的需求安卓可以实现,但...