美文网首页
有关UIDevice获取电量坑

有关UIDevice获取电量坑

作者: Wakeen96 | 来源:发表于2017-08-20 11:49 被阅读0次

由于要通过电量为用户开启不同使用模式,所以需要获取手机的电量来检测电量的变化。

[UIDevice currentDevice].batteryLevel

这是系统给出的电量获取方法,在获取之前首先要把batteryMonitoring设置为YES,但是在实际操作中,发现电量在第一次获取之后,再获取都是定值,一开始以为是方法问题,在网上分别着了几种获取电量的方法,包括

  • 1.batteryLevel
  • 2.通过私有API获取Statusbar的电量值
  • 3.通过引入IOKit framework来获取

实际使用中2获取的电量址并不准确,而且由于使用了私有API,在审核过程中有被拒风险,所以直接舍弃了。
第三种由于引入了framework,增加了包大小,不划算,也舍弃了。后来开始查找为什么会获取一次之后都是定值,通过runtime的一些列表检查了ivarmethod的地址,通过demo对比发现是一样的,所以方法并没有被其他人hook,检查调用线程,发现第一次设置在子线程,于是在launch中设置了YES,通过一系列的尝试,发现以下结论:

  • 1.batteryMonitoring设置的时候必须在主线程,否则之后获取电量以及电池状态,都是第一次获取的状态
  • 2.batteryMonitoring重复设置多次相同值的时候,会被屏蔽掉,只会保留第一次的设置,可能在setter方法里做了优化,判断值是否和之前的相同直接return

相关文章

  • 有关UIDevice获取电量坑

    由于要通过电量为用户开启不同使用模式,所以需要获取手机的电量来检测电量的变化。 这是系统给出的电量获取方法,在获取...

  • iOS 获取设备电量

    获取设备电量 [UIDevice currentDevice].batteryMonitoringEnabled ...

  • iOS开发-获取设备信息和应用信息

    目录 UIDevice设备相关信息设备电量近距离传感器设备性能、界面模式NSBundle获取应用名称应用短版本号应...

  • UIDevice

    获取设备名 [UIDevice currentDevice].name, 获取系统版本号 [[UIDevice c...

  • Power battery 电池

    电池的消耗以及有关的电池量低的时候提醒1、系统提供的通知方法 [获取电量]2、IOKit的方法 [获取电量]3、检...

  • iOS UIDevice

    UIDevice类提供了一个单例对象,它代表着设备,通过它可以获取一些设备的相关信息。比如电池电量值(batter...

  • UUID

    获取UUID的方法方法1,UIDevice.uuid[UIDevice currentDevice].identi...

  • iOS-获取手机信息 含iPhone (12,Pro, mini

    获取手机系统版本 [[UIDevice currentDevice] systemVersion] 获取手机系统 ...

  • iOS 信息采集大全

    获取设备品牌 iphone获取手机的型号 [UIDevice currentDevice]. getC...

  • 获取设备的电池状态

    获取设备的电池状态(一)—— UIDevice API获取获取设备的电池状态(二)—— 运行时获取

网友评论

      本文标题:有关UIDevice获取电量坑

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