Repository navigation
1.2.6 - 自动熄屏不再中断提醒
1.2.6:手机自动熄屏后提醒不再中断
现象与根因
收到短信 → 通知点亮锁屏 → 震动 + 响铃正常 → 几秒后手机自动熄屏 → 震动和声音一起停了。
根因还是"按电源键停止"的实现方式:它用屏幕状态推断按键,而我把 亮屏 → 熄屏 无条件当成"按了电源键"。系统自己也会产生这个切换——通知点亮锁屏后,几秒内会自己再熄掉——于是提醒刚响几秒就被自己停掉了(震动和声音同时消失正是 stopAlert 的行为)。
1.2.6 的判定规则(逐条明确)
| 事件 | 处理 |
|---|---|
| 熄屏 → 亮屏,且在提醒开始 4 秒内 | 判为短信通知唤醒 → 忽略,并记住这次是通知唤醒的 |
| 熄屏 → 亮屏,在 4 秒之后 | 停止(睡着的手机上按电源键唤醒) |
| 锁屏状态变为已锁定 | 停止(真正的锁定动作;通知唤醒不改变锁定状态,不会误判) |
| 亮屏 → 熄屏,且刚才是那条"通知唤醒"息的 | 忽略(通知自己的超时)→ 提醒继续 |
| 亮屏 → 熄屏,且设备当前锁定 | 忽略(通知超时/自动熄屏)→ 提醒继续 |
| 亮屏 → 熄屏,且设备未锁定(正在用手机) | 停止(按电源键锁屏) |
净效果:通知点亮屏幕、以及它几秒后的自动熄屏,都不再打断提醒。
怎么停止提醒
- 屏幕是黑的:按一下电源键(点亮)→ 停止;
- 你正在用手机(未锁定):按一下电源键(锁屏)→ 停止;
- 屏幕上正显示锁屏界面:第一下会被判为"通知超时"忽略,再按一下即停止。
另外:抬手唤醒(拿起手机)也会被识别为用户操作而停止提醒 —— 系统层面它和"按电源键唤醒"完全无法区分。若不希望拿起手机就停,可以去掉"熄屏→亮屏"这一条,只保留锁定与未锁定熄屏两种判定。
核验
- host 单测 44 passed / 0 failed
- detector:三条新判定路径的日志字符串已在产物中确认;零 Hook、未链接 AVFoundation、包内无 SpringBoard 组件与 LaunchDaemon