Repository navigation
1.2.5 - 启动窗口内不做任何事(boot-quiet)
1.2.5:启动窗口内本插件不做任何事(boot-quiet)
先回答"为什么重启用户空间后先亮屏、再黑 7 秒"
这个包里没有任何能控制屏幕的代码。 1.2.0 起提醒引擎和检测都在 imagent 内,包内既没有 SpringBoard 组件、也没有背光/锁屏相关调用;对屏幕它只做两件事:只读两个 Darwin 通知(com.apple.iokit.hid.displayStatus / com.apple.springboard.lockstate),用来在提醒时判断"是否按了电源键"。观察状态不会改变状态,所以它不可能把屏幕关掉。
那么"黑 7 秒"只可能来自两处:
- 用户空间重启本身的时序:Dopamine 重启用户空间时,backboardd/SpringBoard 要整体重启,屏幕本来就会熄一下再亮;这段时间长短取决于系统负载与已装插件数量(电话助手本身也会造成约 1 秒黑屏)。
- imagent 被拖慢:注入到 imagent 的 dylib 会在启动窗口内被 dyld 加载并开始运行。与"你确认正常"的 Diagnostic B 相比,1.2.x 多了提醒引擎、AudioToolbox 依赖和两个 Darwin 通知注册——如果 imagent 因此晚就绪,依赖它的启动流程也会晚,屏幕就晚亮。
1.2.5 的做法
把运行期工作整体延后:%ctor 只做进程判定和一行日志,10 秒后才真正启动轮询、提醒引擎和状态监听。也就是说在"重启用户空间"这段最敏感的窗口里,本插件除了被 dyld 加载之外什么都不做:不打开 sms.db、不注册通知、不初始化引擎。
代价:imagent 启动后最初约 10 秒内到达的短信不会被提醒(基线在此之前建立)。这个数字可以按你的需要调整。
请帮我做一次判定(只有你能测)
- 先装 1.2.5,重启用户空间,掐表记录黑屏秒数,连做 2 次;
- 再卸载 KeywordSMSAlert(Sileo 卸载即可),重启用户空间,同样掐表 2 次;
- 把 4 个数字告诉我。
如果卸载后仍然是 7 秒左右 → 与我们无关,是电话助手/Dopamine 的重启时序;如果卸载后回到 1 秒、装 1.2.5 是 7 秒 → 说明确实是我们拖慢了 imagent,我再把 AudioToolbox 改成首次提醒时才动态加载(让本插件的依赖集合与已验证正常的版本完全一致)。
核验
- host 单测 44 passed / 0 failed
- detector:boot-quiet 标记存在、零 Hook、未链接 AVFoundation、屏幕状态监听仍在