美文网首页iOS进阶iOS程序犭袁iOS && Android
iOS 常见耗电量检测方案调研

iOS 常见耗电量检测方案调研

作者: iOS程序犭袁 | 来源:发表于2017-06-19 11:00 被阅读3199次

iOS 常见耗电量检测方案调研

本文对应 Demo 以及 Markdown 文件在 GitHub 仓库中,文中的错误可以提 PR 到这个文件,我会及时更改。

前言

如果我们想看下我们的 APP 或 SDK 是否耗电,需要给一些数据来展示,所以就对常见的电量测试方案做了一下调研。

影响 iOS 电量的因素,几个典型的耗电场景如下:

  1. 定位,尤其是调用GPS定位
  2. 网络传输,尤其是非Wifi环境
  3. cpu频率
  4. 内存调度频度
  5. 后台运行

系统接口

iOS 10 系统内置的 Setting 里可以查看各个 App 的电池消耗。

enter image description here

系统接口,能获取到整体的电池利用率,以及充电状态。代码演示如下:

   //#import <UIKit/UIDevice.h>
   UIDevice *device = [UIDevice currentDevice];
   device.batteryMonitoringEnabled = YES;
   //UIDevice返回的batteryLevel的范围在0到1之间。
   NSUInteger batteryLevel = device.batteryLevel * 100;
   //获取充电状态
   UIDeviceBatteryState state = device.batteryState;
   if (state == UIDeviceBatteryStateCharging || state == UIDeviceBatteryStateFull) {
       //正在充电和电池已满
   }

这些均不符合我们的检测需求,不能检测固定某一时间段内的电池精准消耗。

测试平台

阿里云移动测试MQC

MQC 调研,结论:没有iOS性能测试,无法提供耗电量指标。

解释 截图
安卓有性能测试项目 enter image description here
安卓的性能测试项目 enter image description here
iOS没有性能测试,无法提供耗电量指标 enter image description here

百度移动云测试中心 MTC 同样没有 iOS 的性能测试。

其他测试平台类似。

常用的电量测试方法:

  1. 硬件测试
  2. 软件工具检测

软件工具检测

下面介绍通过软件 Instrument 来进行耗电检测。

iOS电量测试方法

1.iOS 设置选项 ->开发者选项->logging ->start recording

enter image description here

2.进行需要测试电量的场景操作后进入开发者选项点击stop recording

3.将iOS设备和Mac连接

4.打开Instrument,选择Energy Diagnostics

5.选择 File > Import Logged Data from Device

enter image description here

6.保存的数据以时间轴输出到Instrument面板

enter image description here

其他

  • 测试过程中要断开 iOS设备和电脑、电源的连接
  • 电量使用level为0-20,1/20:表示运行该app,电池生命会有20个小时;20/20:表示运行该app,电池电量仅有1小时的生命
  • 数据不能导出计算,只能手动计算平均值

硬件检测

通过硬件 PowerMonitor 可以精准地获得应用的电量消耗。

步骤如下:

  1. 拆开iOS设备的外壳,找到电池后面的电源针脚。
  2. 连接电源监控器的设备针脚
  3. 运行应用
  4. 测量电量消耗

下图展示了与iPhone的电池针脚连接的电源监控器工具。

enter image description here

可以参考:Using Monsoon Power Monitor with iPhone 5s

  • 可以精准地获得应用的电量消耗。
  • 设备价格 $771.00 USD
  • 需要拆解手机

这样看来,只有 Instrument 的方案更适合,大家有什么方案的话,也可以贴在下面。

相关文章

网友评论

  • 一只长毛猫:楼主说“电量使用level为0-20,1/20:表示运行该app,电池生命会有20个小时;20/20:表示运行该app,电池电量仅有1小时的生命” , 请问楼主,这个结论是从哪里得来的。有没有比较权威的苹果官方文档说明?
  • 狗狗臭鸡蛋:6.保存的数据以时间轴输出到Instrument面板

    这个只能看到电量的消耗的吧,具体呢个app耗电没法看的吧
  • qiushuitian:作为一个好的APP,省电是需要做到的。但是个人体验,耗电量貌似还不是最重要的。一般要用某个app都是有真实需求的,比如百度地图,微博,即使非常耗电手机发烫,可能我也不会去卸载它。顶多配个充电宝。
    RephontilZhou:你想说明啥呢?哈哈哈😁
  • 简晰333:喜欢就留言or赞赏
  • 郑一一一一:我也写了篇 关于 WWDC17的 教你开发省电的 app http://www.jianshu.com/p/f0dc653d04ca 希望批评指点!
    42d057b8eb33:挺好,我觉得两篇可以结合着看。
    其实除了系统本身传感器的耗电,程序能够控制的只有CPU和网络。
    如果你的应用有定位、长连接、频繁的蓝牙连接,这些业务需求,能做的事情就不多了。
  • lp_马建成:最后一种最好,玩起来肯定嗨,你试过么 ?
    iOS程序犭袁:@zaoxxn :anguished:再想想呗。吊胃口啊
    zaoxxn:有个鹅场的测试找的方法,更靠谱点,但是连接忘记了
    iOS程序犭袁:没试过,买不起:smile:

本文标题: iOS 常见耗电量检测方案调研

本文链接:https://www.haomeiwen.com/subject/mpdgqxtx.html