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

如何获取iOS应用程序的电池消耗值(x毫安时/分钟)?,ios,objective-c,battery,batterylevel,Ios,Objective C,Battery,Batterylevel,我目前正在努力提高我们正在开发的应用程序的电池使用率 我唯一发现的是越狱解决方案的百分比() 我没有找到绝对值,例如3.4 mAh/min 我也没有找到评估电池消耗的iOS指南 理想情况下,我希望看到这样的情况: 谷歌分析SDK:0.4毫安时/分钟 蓝牙SDK:1.0毫安时/分钟 API SDK:2.0毫安时/分钟 电池医生提供的东西: 这可能吗 谢谢你的帮助 Instruments不会给你这样一幅美丽的画面,但它会向你展示CPU、GPU的使用情况,这通常应该是电池消耗的一个指标,并且肯定

我目前正在努力提高我们正在开发的应用程序的电池使用率

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

我没有找到绝对值,例如3.4 mAh/min

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

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

  • 谷歌分析SDK:0.4毫安时/分钟
  • 蓝牙SDK:1.0毫安时/分钟
  • API SDK:2.0毫安时/分钟
电池医生提供的东西:

这可能吗


谢谢你的帮助

Instruments不会给你这样一幅美丽的画面,但它会向你展示CPU、GPU的使用情况,这通常应该是电池消耗的一个指标,并且肯定是一个很好的方法来查看你的应用程序的性能/硬件利用率。

我们在使用上取得了不同的成功,这依赖于私有API

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


Sami

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

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

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

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

还有两个几乎完全相同的应用程序,一个是橙色的,另一个是绿色的电池图标,似乎包括和排除了相同的应用程序。这看起来也有点可疑。。。 还有第三个应用程序“Battery Lite”,类似但没有mAh/min读数(奇怪的单位btw)

试试看,它基本上从
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;
}
{
适配器详细信息={
安培数=1000;
Description=“usb主机”;
FamilyCode=“-536854528”;
pmu配置=1000;
瓦特=5;
};
AdapterInfo=16384;
安培数=1000;
AppleRawCurrentCapacity=1279;
AppleRawMaxCapacity=1275;
ATCriticaleLevel=0;
AtWarnLevel=0;
电池数据={
BatterySerialNumber=已编辑;
ChemID=355;
循环计数=524;
设计容量=1420;
旗帜=640;
全可用容量=1325;
制造日期=修订日期;
最大容量=1273;
MfgData=修订版;
QmaxCell0=1350;
充电状态=100;
电压=4194;
};
电池电量=1;
BatteryKey=“0003默认值”;
容量=52;
BootCapacityEstimate=2;
启动电压=3518;
CFBundleIdentifier=“com.apple.driver.AppleD1815PMU”;
充电器配置=990;
电流容量=1275;
循环计数=524;
设计容量=1420;
外部可充电=1;
外部连接=1;
完全充电=1;
IOClass=Appled1815PMU电源;
IOFunctionParent64000000=;
iogenerallinterest=“IOCommand不可序列化”;
IoInterruptController=(
IOInterruptController340000000,
IOInterruptController340000000,
IOInterruptController340000000,
IOInterruptController340000000
);
IOInterruptSpecifiers=(
,
,
,
);
IOMatchCategory=Appled1815PMU电源;
IOPower管理={
CurrentPowerState=2;
DevicePowerState=2;
MaxPowerState=2;
};
眼压评分=0;
IOProviderClass=AppleD1815PMU;
年龄=0;
放电=0;
位置=0;
制造商=A;
最大容量=1275;
型号=“0003-A”;
序列=编辑;
温度=2590;
剩余时间=0;
更新时间=1461830702;
电压=4182;
“电池数据”={
“0003默认值”=;
“0004默认值”=;

“0005默认值”=此github演示只提供电池电量和电池状态。它不提供应用程序消耗的电池。你能做到这一点吗?@有趣的是,在这方面取得了任何成功吗?需要明确的是:没有毫安时/分钟这样的东西。这是一个完全虚构的测量单位,没有任何意义。功耗通常以毫安(mA)来测量,或瓦特(W)。这并不提供问题的答案。若要评论或要求作者澄清,请在其帖子下方留下评论-您可以随时对自己的帖子发表评论,一旦您有足够的评论,您就可以发表评论。即使这没有提供明确的答案,但它确实提供了一个可能的答案,说明我们无法找到信息的原因我们寻求帮助。