Как получить значение расхода батареи для приложения iOS (x мАч/мин)?

В настоящее время я пытаюсь улучшить использование батареи в приложении, которое мы разрабатываем.

Единственное, что я нашел, это проценты с решением для джейлбрейка (здесь),

Я не нашел абсолютного значения, например, 3,4 мАч/мин.

Я также не нашел руководства iOS для оценки расхода батареи.

В идеале я хотел бы видеть что-то вроде этого:

  • Google Analytics SDK: 0,4 мАч/мин.
  • Bluetooth SDK: 1,0 мАч/мин.
  • API SDK: 2,0 мАч/мин.

Кое-что, что предлагает Battery Doctor:

введите здесь описание изображения

Это вообще возможно?

Спасибо за помощь !


person Nicolas Henin    schedule 11.09.2013    source источник
comment
Умеете ли вы это делать?   -  person Funny    schedule 30.05.2014
comment
@Funny Есть успехи в этом?   -  person Yogesh Maheshwari    schedule 25.02.2016
comment
Чтобы было ясно: нет такого понятия, как мАч/мин. Это полностью выдуманная единица измерения, которая ничего не значит. Потребляемая мощность обычно измеряется в миллиамперах (мА) или ваттах (Вт).   -  person ldoogy    schedule 03.05.2016


Ответы (4)


У нас был переменный успех с использованием https://github.com/ethan605/ios-battery-stat, который опирается на частный API.

Таким образом, вы не можете использовать это, если вы развертываете свое приложение в Apple Store, но это может быть полезно при развертывании в TestFlight или аналогичных магазинах бета-пользователей.

саамы

person Sami Dalouche    schedule 20.09.2013
comment
Эта демонстрация github просто показывает уровень заряда батареи и состояние батареи. Это не дает батареи, потребляемой приложениями. - person Funny; 30.05.2014

Проведя несколько тестов в течение пары дней, у меня появилось ОЧЕНЬ сильное подозрение, что эти числа, которые мы видим, НЕ являются фактическими измерениями на устройстве, они кажутся ОЧЕНЬ постоянными, и только некоторые из действительно работающих приложений находятся в списке. .

У меня есть ТЕОРИЯ, что у них есть какая-то ограниченная база данных, и если какое-либо приложение на телефоне соответствует этому списку, оно включено.

Это все еще может быть полезно в качестве подсказки о том, что использует много, а что мало. Но я не думаю, что вы должны видеть это как «настоящие» номера с вашего телефона. Кто-нибудь может подтвердить или опровергнуть эту теорию???

Это также объясняет, почему вы не можете найти способ получить эту информацию

Также есть ДВА почти идентичных приложения, одно с оранжевым, а другое с зеленым значком батареи, и, похоже, это одни и те же приложения, которые включаются и исключаются. это тоже кажется немного подозрительным ... Есть третье приложение «Battery Lite», похожее, но без показаний мАч / мин (кстати, странная единица измерения)

person Eske Rahn    schedule 09.01.2015
comment
Это не дает ответа на вопрос. Чтобы подвергнуть критике или запросить разъяснения у автора, оставьте комментарий под его сообщением — вы всегда можете прокомментировать свои собственные сообщения, и как только у вас будет достаточно репутация, вы сможете комментировать любой пост. - person oɔɯǝɹ; 10.01.2015
comment
Несмотря на то, что это не дает ОПРЕДЕЛЕННОГО ответа, он дает ВОЗМОЖНЫЙ ответ на вопрос, почему мы не можем найти информацию, которую ищем. - person Eske Rahn; 10.01.2015

Попробуйте 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, которая (когда устройство отключено от сети) показывает фактическое энергопотребление устройства в мАч. Пока ваше приложение работает, это покажет вам точное энергопотребление для вашего приложения.

ОБНОВЛЕНИЕ: Судя по бета-версии iOS 10, Apple полностью удалила эту информацию из словаря (независимо от того, как она загружается, даже если мы загружаем ее напрямую, вызывая IOKit). Словарь все еще существует, но теперь он содержит только основные ключи, такие как ExternalConnected и CurrentCapacity.

person ldoogy    schedule 30.04.2016

Инструменты не дадут вам такой красивой картины, но они покажут вам загрузку процессора и графического процессора, что обычно должно быть индикатором разряда батареи и, безусловно, является хорошим способом посмотреть на производительность вашего приложения / использование оборудования.

person Dad    schedule 17.09.2013