在 iOS 系统中,通常为了节省电池电量,我们会将设置 -> 显示与亮度 -> 自动锁定开启,如图 1 所示,当在短时间内用户没有触摸屏幕时,系统会先将屏幕变暗,然后自动锁定,使设备处于“休眠”状态。
但在开发 App 过程中,有一些场景我们是不希望屏幕自动锁定的,即使用户长时间没有进行操作,如游戏运行页面、地图导航、音视频播放、语音/视频通话、展示收付款码等场景。
UIApplication 提供了一个 idleTimerDisabled
属性,用于标识是否在当前 App 内禁用系统空闲自动锁定计时,默认为 NO;当这个属性置为 YES 时,则在当前 App 内会禁止系统空闲计时器 “idle timer”,避免系统锁定进入休眠。
因此,我们可以在进入需要保持屏幕常亮的页面时,把这个属性设为 YES,退出该页面时再改回 NO,代码如图 2 所示。
1 | [UIApplication sharedApplication].idleTimerDisabled = YES; |
这个属性值的设置仅对当前 App 有效,当切换到系统桌面或者其他 App 时,”idle timer” 会自动重新开始计时。
此外,如果我们在 App 内已禁用 “idle timer” 的页面中有调用唤起系统相机,则在相机关闭后,idleTimerDisabled 会被自动置为 NO,需要我们再手动把它置为 YES。
最后,如图 1 底部的提示语,在 iPhone X 等有 Face ID 的设备中,当系统检测到用户眼睛长时间注视屏幕时,此时即使没有操作,也不会调暗屏幕和自动锁定。
参考链接:idleTimerDisabled