You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否重写UIDeviceBatteryState变量?能否修改该变量禁用设备充电?

解答:无法通过修改UIDeviceBatteryState来禁用设备充电

嘿,这个问题问得挺有意思!不过直接给你结论:不行,你没办法重写或者修改UIDevice.current.batteryState这个属性来改变设备实际的充电状态,更没法用这种方式禁用充电。原因主要有这几点:

  • 这是系统只读属性:UIDevice的batteryState本身就是只读的(声明是var batteryState: UIDeviceBatteryState { get }),它的值是iOS系统根据硬件检测到的真实充电情况实时更新的,第三方App完全没有权限去修改这个系统维护的状态值。

  • 沙箱与硬件权限限制:iOS的App运行在严格的沙箱环境里,只能访问自己沙箱内的资源和系统开放的有限API,根本碰不到硬件层面的充电控制逻辑。充电是由系统底层和硬件模块直接交互管理的,普通App连干预的权限都没有。

  • 篡改状态≠改变实际行为:退一步说,就算你用一些黑科技(比如Method Swizzling)让batteryState返回.unplugged(实际是充电状态),那也只是骗了你自己的App,设备该充电还是会充电,因为底层的硬件逻辑根本没被改变。而且这种手段还违反App Store审核规则,大概率过不了审。

如果你的需求是想控制设备不充电,目前iOS没有开放给第三方App这样的API。唯一可能相关的是企业级设备通过MDM(移动设备管理)配置,但那是面向企业管理的场景,普通第三方App做不到。

内容的提问来源于stack exchange,提问作者Alex Broere

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 04:05:19