lich4 / ChargeLimiter

Charge limiter for iOS, inspired by AlDente
GNU General Public License v3.0
650 stars 31 forks source link

我有一些疑问希望能得到回复 #5

Closed InnovatorPrime closed 7 months ago

InnovatorPrime commented 7 months ago

据我了解

AlDente mac版是通过一个后台常驻进程,不断循环检测当前电量,如果电量高于用户设定值,则向 SMC 中 CH0B 这个 key 里写入 01 以停止充电,反之则写入 00 使电池开始充电。

ios版是否也遵守上述规则?所以目前AlDente ios版也是必须要保持在后台运行吗?

有考虑过使用 bclm 是往 SMC 里 CHWA 这个 key 里写入数值( 80 or 100 ),直接设定充电上限,从而 bclm 不需要常驻后台不断检测电量。这种逻辑吗?

谢谢!

lich4 commented 7 months ago

Mac AlDente源码我也大概看过,不过iOS端的我是逆向powerd系统进程得到的,iOS里的方法显然更简单,所以我也没测试 Mac AlDente那套底层接口。毕竟iOS是闭源的,是否底层都需要越狱或者巨魔来获取更高权限。这个工具的主要受众我认为是长期充电不拔的工作室群体,因为个人用户正常使用肯定是大部分情况在户外不会一直连线充电(Mac AlDente要比iOS更有用一些,我个人就是长期用Macbook不拔线的,因为充满了要拔线是很反人性的事,苹果给设定的场景其实只适合出差的)。基于这个场景我觉得是否用底层接口并非十分关键的事情,我iOS这套接口在应用层运行,卸载软件的时候会自动恢复充电。如果换用直接读写SMC这种更底层方式去做,使用方式和功能上区别并不大。我觉得各有各的好,如果你有兴趣可以在基础上测试一下Mac AlDente的底层接口。 目前这套就是临时兴起开发的,花了1天顺手写的工具而已。手头还在忙其他项目。

lich4 commented 7 months ago

经测试iOS不存在AppleSMC服务因此Mac上的方案不可行,谢谢关注