在 iOS 中检查我的应用的电池消耗

Posted

技术标签:

【中文标题】在 iOS 中检查我的应用的电池消耗【英文标题】:battery consumption check for my app in iOS 【发布时间】:2016-10-17 12:33:09 【问题描述】:

我需要获取我的应用的电池消耗详细信息。 我使用仪器进行跟踪,我的能源使用水平为 1/20。 这是什么 1/20?

【问题讨论】:

手机电量是否为 5%? @KSigWyatt 电池电量为 100% 【参考方案1】:

    很快:

    UIDevice *Device = [UIDevice currentDevice];
    [Device setBatteryMonitoringEnabled:YES];
    
     int state = [Device batteryState];
    NSLog(@"Now the status: %d",state);
     double batLeft = (float)[Device batteryLevel] * 100;
      NSLog(@"Charge left: %ld", batLeft);
    

    该 API 允许您注册以接收有关电池电量更改的通知。它仅以 5% 的增量向上或向下报告更改,但您可以使用计时器并测量两次更改(或初始电池电量和第一次更改)之间的时间。以下是您注册通知的方式:

       // Use this call to get the current battery level as a float
      // [[UIDevice currentDevice] batteryLevel]
    
       [[UIDevice currentDevice] setBatteryMonitoringEnabled:YES];
    
      [[NSNotificationCenter defaultCenter] addObserver:self
                                        selector:@selector(batteryStateDidChange:)
                                         name:UIDeviceBatteryStateDidChangeNotification
                                       object:nil];
    
       [[NSNotificationCenter defaultCenter] addObserver:self
                                     selector:@selector(batteryLevelDidChange:)
                                         name:UIDeviceBatteryLevelDidChangeNotification
                                       object:nil];
    

第一个通知告诉您当前状态,例如拔下、充电或充满。每当达到 5% 的增量时,都会触发第二个。

在我看来,如果你得到的只是 5% 的变化通知,那么准确度就不是你可以很好或快速计算出来的东西。如果设备什么都不做,5% 的变化可能需要很长时间。

也许您可以使用计时器监控 [[UIDevice currentDevice] batteryLevel],但是,虽然我没有尝试过,但我认为它只会以相同的 5% 增量更新。

发件人:iphone: Calculating battery life

    这是一个很好的例子:http://blog.coriolis.ch/2009/02/14/reading-the-battery-level-programmatically/

【讨论】:

我不是在询问我手机的电池电量。我想计算用户在 iPhone 上使用我的应用时的电池消耗

以上是关于在 iOS 中检查我的应用的电池消耗的主要内容,如果未能解决你的问题,请参考以下文章

电池使用 - IOS

在 iOS 中以编程方式减少因后台活动而导致的电池消耗

应用程序消耗过多电池

安卓电池使用情况

iOS 在后台监控/测距信标会消耗大量电池

iOS 上的标准定位服务电池消耗