9

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

我发现的唯一一件事是越狱解决方案的百分比(这里),

例如,我没有找到像 3.4 mAh/min 这样的绝对值。

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

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

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

Battery Doctor 提供的东西:

在此处输入图像描述

这甚至可能吗?

感谢您的帮助 !

4

4 回答 4

4

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

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

萨米人

于 2013-09-20T16:02:15.987 回答
1

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

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

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

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

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

于 2015-01-09T23:28:42.867 回答
1

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

于 2016-04-30T00:34:28.330 回答
0

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

于 2013-09-17T22:05:21.927 回答