【问题标题】:How to get battery consumption value for an iOS app (x mAh/min)?如何获取 iOS 应用程序的电池消耗值(x mAh/min)?
【发布时间】:2013-09-11 12:34:25
【问题描述】:

我目前正在尝试改善我们正在开发的应用的电池使用情况。

我发现的唯一内容是越狱解决方案的百分比 (here),

我没有找到像 3.4 mAh/min 这样的绝对值作为示例。

我也没有找到 iOS 指南来评估电池消耗。

理想情况下,我希望看到类似的东西:

  • 谷歌分析 SDK:0.4 mAh/分钟
  • 蓝牙 SDK:1.0 mAh/分钟
  • API SDK:2.0 mAh/分钟

Battery Doctor 提供的东西:

这可能吗?

感谢您的帮助!

【问题讨论】:

  • 你能做到吗?
  • @Funny 这方面有成功吗?
  • 明确一点:没有 mAh/min 这样的东西。这是一个完全组成的计量单位,没有任何意义。功耗通常以毫安 (mA) 或瓦特 (W) 来衡量。

标签: ios objective-c battery batterylevel


【解决方案1】:

我们使用依赖私有 API 的 https://github.com/ethan605/ios-battery-stat 取得了不同程度的成功。

因此,如果您在 Apple Store 上部署应用程序,则无法使用它,但在部署到 TestFlight 或类似的 beta 用户应用程序商店时会很有用。

萨米

【讨论】:

  • 这个 github 演示只是给出了电池电量和电池状态。它不会提供应用程序消耗的电池电量。
【解决方案2】:

经过几天的测试,我非常怀疑我们看到的这些数字不是设备上的实际测量值,它们似乎太固定了,而且只有一些实际运行的应用程序在列表...

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

它仍然可以作为一个有用的提示,什么用得很多,什么用得少。但我认为您不应该将其视为手机中的“真实”数字。谁能证实或反驳这个理论???

这也解释了为什么您找不到获取此信息的方法

还有两个几乎相同的应用程序,一个带有橙色电池图标,一个带有绿色电池图标,并且似乎包含和排除了相同的应用程序。这似乎也有点腥... 还有第三个应用程序“Battery Lite”,类似但没有 mAh/min 读数(顺便说一句奇怪的单位)

【讨论】:

  • 这没有提供问题的答案。要批评或要求作者澄清,请在他们的帖子下方发表评论 - 您可以随时评论自己的帖子,一旦您有足够的reputation,您就可以comment on any post
  • 尽管这没有提供明确的答案,但它确实提供了一个可能的答案,说明我们为什么找不到我们所寻找的信息。
【解决方案3】:

试试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 测试版,Apple 似乎已经从字典中完全删除了这些信息(不管它是如何加载的,即使我们通过调用 IOKit 直接加载它)。字典仍然存在,但它现在只包含基本键,例如 ExternalConnectedCurrentCapacity

【讨论】:

    【解决方案4】:

    仪器不会为您提供这样漂亮的图片,但它会显示 CPU、GPU 使用情况,这通常应该是电池消耗的指标,当然也是查看应用程序性能/硬件利用率的好方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多