如何获得iOS应用程序的电池消耗值(x毫安/分钟)?

我目前正在努力改善我们正在开发的应用程序的电池使用情况。

我发现的唯一的东西是越狱解决scheme( 在这里 )的百分比,

我没有find3.4毫安/分钟的绝对值作为例子。

我也没有findiOS指南来评估电池消耗。

理想情况下,我希望看到这样的事情:

  • Google AnalyticsSDK:0.4毫安时/分
  • 蓝牙SDK:1.0毫安/分钟
  • API SDK:2.0 mAh / min

电池医生正在提供的东西:

在这里输入图像说明

这甚至可能吗?

感谢您的帮助 !

我们使用https://github.com/ethan605/ios-battery-stat取决于私有API。

因此,如果您在Apple Store上部署应用程序,则无法使用该function,但在部署到TestFlight或类似的Beta版用户应用程序商店时可能非常有用。

萨米

在做了一些testing之后,过了几天,我有一个非常强烈的怀疑,我们看到的这些数字不是设备上的实际测量结果,它们看起来太稳定,只有一些实际运行的应用程序在列表中。 。

我有一个理论,他们有某种有限的数据库,如果手机上的任何应用程序是匹配这个列表,它包括在内。

它可能仍然是有用的暗示什么使用了很多,什么使用一点。 但是我不认为你应该把它看作你手机上的“真实”号码。 任何人都可以证实或反驳这个理论?

这也解释了为什么你不能find一个方法来获得这个信息

也有两个几乎完全相同的应用程序,一个是橙色的,另一个是绿色的电池图标,而且这个应用程序似乎是包含和排除的应用程序。 这似乎有点腥……有第三个应用程序“电池精简版”,是类似的,但没有mAh /分钟读数(奇怪的单位btw)

尝试使用UIDeviceListener ,它基本上从UIDevice窃取整个电池数据字典,而不使用任何私有API。 它暴露了大量的信息:

 { AdapterDetails = { Amperage = 1000; Description = "usb host"; FamilyCode = "-536854528"; PMUConfiguration = 1000; Watts = 5; }; AdapterInfo = 16384; Amperage = 1000; AppleRawCurrentCapacity = 1279; AppleRawMaxCapacity = 1275; AtCriticalLevel = 0; AtWarnLevel = 0; BatteryData = { BatterySerialNumber = REDACTED; ChemID = 355; CycleCount = 524; DesignCapacity = 1420; Flags = 640; FullAvailableCapacity = 1325; ManufactureDate = REDACTED; MaxCapacity = 1273; MfgData = REDACTED; QmaxCell0 = 1350; StateOfCharge = 100; Voltage = 4194; }; BatteryInstalled = 1; BatteryKey = "0003-default"; BootBBCapacity = 52; BootCapacityEstimate = 2; BootVoltage = 3518; CFBundleIdentifier = "com.apple.driver.AppleD1815PMU"; ChargerConfiguration = 990; CurrentCapacity = 1275; CycleCount = 524; DesignCapacity = 1420; ExternalChargeCapable = 1; ExternalConnected = 1; FullyCharged = 1; IOClass = AppleD1815PMUPowerSource; IOFunctionParent64000000 = <>; IOGeneralInterest = "IOCommand is not serializable"; IOInterruptControllers = ( IOInterruptController34000000, IOInterruptController34000000, IOInterruptController34000000, IOInterruptController34000000 ); IOInterruptSpecifiers = ( <03000000>, <26000000>, <04000000>, <24000000> ); IOMatchCategory = AppleD1815PMUPowerSource; IOPowerManagement = { CurrentPowerState = 2; DevicePowerState = 2; MaxPowerState = 2; }; IOProbeScore = 0; IOProviderClass = AppleD1815PMU; InstantAmperage = 0; IsCharging = 0; Location = 0; Manufacturer = A; MaxCapacity = 1275; Model = "0003-A"; Serial = REDACTED; Temperature = 2590; TimeRemaining = 0; UpdateTime = 1461830702; Voltage = 4182; "battery-data" = { "0003-default" = <...>; "0004-default" = <...>; "0005-default" = <...}; "built-in" = 1; } 

特别感兴趣的是InstantAmperage按键,(当设备被拔出时)以mAh显示实际的设备功耗。 当您的应用程序正在运行时,会显示您的应用程序确切的功耗。

更新:基于iOS 10 beta,它看起来像苹果已经完全从字典中删除这些信息(不pipe它是如何加载的,即使我们通过调用IOKit直接加载它)。 该字典仍然存在,但它现在只包含基本的键,如ExternalConnectedCurrentCapacity

仪器不会给你一个这样的漂亮的图片,但它会告诉你CPU,GPU的使用,这应该通常是一个电量消耗的指标,当然是一个很好的方式来看看你的应用程序的性能/硬件利用率。

我也在寻找相同的,但还没有任何东西,但很less有初步的解决方法。 如果您仍然在寻找解决scheme,您可以从此开始。

你可以得到设备的日志崩溃日志和控制台日志,从控制台日志你可能会得到关于电池使用的信息,它可能不会给你一个当前(毫安)的信息,但开始这将帮助你。

这里是获取设备日志的链接 。