Repository navigation
Releases: ytdttj/NotificationCleaner
Release list
2.2.1 Dev 1
【修复】
1.修复了一条特殊通知可卡死系统通知服务的问题
2.修复了 LSPosed 模式下已关闭的规则仍在拦截的问题
3.修复了真人私信被误拦、灭屏后通知成批延迟的问题
4.修复了学习标注被覆盖丢失、取消学习不回滚、学习成果不生效的问题
5.修复了通知含“>”被无条件拦截且无法翻案的问题
6.修复了设置页二级页面跳转被劫持等问题
【新增】
1.新增「此渠道一律拦截」
2.新增 App 级学习先验:同一 App 学满 3 条广告后,换任何渠道的新广告都直接拦
【优化】
1.重训基础模型:伪装营销直接识别,真人私信零误杀
2.隐私加固:通知数据不进云备份,更新包增加签名校验
3.高级功能等区域滚动更流畅
更新后请重启一次手机(模块改动需重启生效)
2.2.0
【新增】
1.底栏液态玻璃效果重做:切换页面时胶囊平滑滑动,可按住拖动并回弹
2.底栏选中指示器的质感重做
3.优化 SystemUI/xmsf 作用域热重载,改动后无需重启即可生效
【修复】
1.修复了手机灭屏后通知延迟、上岛不及时的问题
2.修复了超级岛偶发不弹出的问题
3.修复了点击超级岛「已完成」按钮后岛不消失的问题
4.修复了微信分享文案被误当成交易而上岛的问题
5.修复了余额类通知被误当成交易而上岛的问题
6.修复了底栏宽度变成满屏、指示器错位的问题
7.修复了选中胶囊位置偏高、底部文字露在胶囊外的问题
8.修复了胶囊圆角不同心、选中放大幅度不明显的问题
9.修复了收到通知时不弹更新提示窗的问题
更新后请重启一次手机(模块改动需重启生效)
2.2.0 Dev 10
【修复】
1.修复了手机灭屏后通知延迟、上岛不及时的问题
2.修复了微信分享文案被误当成交易而上岛的问题
3.修复了余额类通知被误当成交易而上岛的问题
更新后请重启一次手机(模块改动需重启生效)
2.2.0 Dev 9
2.2.0 Dev 9
修复超级岛偶发不弹出的问题。
根因
App 走「SystemUI 代发」路径上岛时,把整个 miui.focus.param extras 打包进跨应用广播发给 SystemUI。
其中岛图标未做降采样,实测单条 parcel 达 329624 字节,超出 Binder 单事务安全上限,
BroadcastQueue 在投递阶段抛 TransactionTooLargeException 把广播整个丢弃。
因 sendBroadcast 无回执,App 侧日志仍记「岛通知已提交系统(SystemUI 代发)」——
日志显示成功,实际岛没出现。进 APP 触发补扫重发时才偶然补上。
改动
- 岛图标等比降采样到 96×96,并去掉只写不读的重复图标副本
- 代发广播发送前实测 parcel 体积,超 64KB 直接判定失败并回退自身路径(不再石沉大海)
- 新增投递回执:SystemUI 侧 notify 成功才回发确认,App 侧超时未收到即明确记为失败——上岛状态不再靠猜
- 代发通道握手提前到 App 启动与保活服务建立,并在初始化时主动探测 + 延迟重试
(此前每个进程生命周期的第一条岛通知必然失败) - 修一处初始化失败后永不重试的问题
- 上岛日志措辞修正:「已提交」改为「待回执」,不再自称成功
安装后请重启一次手机,让 SystemUI 重新加载模块。
2.2.0 Dev 8:修复胶囊圆角对齐与放大幅度
修复两个视觉问题
1. 圆角不对齐
真机表现:胶囊右侧紧贴底栏边缘,左上角却空出一大块。
几何原因:两个同心胶囊要视觉对齐,水平内缩必须等于它们的半径差。
| 外壳高 | 指示器高 | 半径差 | 实际内缩 | 结果 | |
|---|---|---|---|---|---|
| Dev 7 | 56 | 44 | 6dp | 2dp | 圆心横向差 4dp |
| Dev 8 | 56 | 52 | 2dp | 2dp | 严格同心 |
Dev 7 的间隙实测从中间 2dp 渐变到顶部 13.3dp——所以看起来是"一头贴、一头空"。
Dev 8 把指示器改成 52dp,内缩同步设为 2dp,圆角严格对齐,间隙全程均匀。
2. 放大幅度不明显
两个原因都修了:
- 幅度不够:44dp × 1.36 = 60dp,只比外壳 56dp 高 4dp(上下各溢出 2dp),肉眼几乎看不出。现改为 52dp × 1.42 = 74dp,高出 18dp(各溢出 9dp)。
- 弹簧参数不对:缩放用的是
spring(0.55f, 420f),阻尼比 0.55 属欠阻尼,scale 来回振荡好几下,在 350ms 的滑移窗口里正负抵消,看起来像"没放大"。现改为spring(0.9f, 260f)——接近临界阻尼,单调上升不回弹;刚度降到 260 使达峰约 260ms,与位置滑移的 350ms 匹配,峰值能被完整看到。
安装:下载 APK 覆盖安装(同签名)。
如果圆角还想更贴,改 GlassIndicatorHInset 即可——它现在严格等于半径差,调整指示器高度时记得同步(见代码注释里的几何推导)。
2.2.0 Dev 7:修复选中胶囊位置偏高
修复:胶囊没盖住按钮文字
真机截图显示胶囊盖住了图标,但底部的标签文字露在胶囊外面。
原因:垂直方向坐标错位
底栏外壳带 padding(vertical = 6dp),所以按钮内容区是 56 − 12 = 44dp,起点在 y = 6dp。
而选中指示器是独立图层,坐标原点在外壳的 y = 0——它不知道外壳有 padding。
上一版给指示器的高度是 56 − 2×5 = 46dp:
- 高度 46dp 超过内容区的 44dp
- 位置比内容区高了 6dp
两个叠加,底部约 8dp 的文字就露在了胶囊外。
修法
让指示器与 item 槽位共用同一套内缩,不再各自算坐标:
- 指示器垂直内缩直接引用外壳的
GlassBarItemPaddingV(消除两个值分叉的可能) - 指示器高度改为
56 − 2×6 = 44dp,正好等于外壳内容区高度 - 显式补上
padding(top = 6dp),与外壳顶部对齐
这样静止态与按钮槽位逐像素重合——完整覆盖。按下时 1.28 → 1.36,44dp 胀到 60dp,比外壳 56dp 高 4dp,以中心放大后上下各溢出 2dp,即"点击后超出底栏上下一点点"。
顺带把 padding 移到 graphicsLayer 之后,避免 padding 区域被玻璃采样进去多采一段空白。
安装:下载 APK 覆盖安装(同签名)。
2.2.0 Dev 6:底栏指示器质感重做
按真机反馈重做指示器质感
对比 REAREye 原版效果,逐项修正了三处参数错误。
1. 指示器不再像白色奶块(最关键)
之前把静止态表面写成 30% 主色固定填充 + 固定高光/阴影,结果是一块不透明白罩,把底栏内容全盖住了。
REAREye 的真实做法:静止态只是 10% 黑/白淡罩,而且随按下淡出、把位置让给折射效果:
- 静止:10% 淡罩,无折射、无描边、无投影 → 透明玻璃罩住内容
- 按下:淡罩淡出,lens 折射 + 高光 + 投影 + 内阴影依次淡入
2. 胶囊盖满整个按钮,点击时变宽并溢出
- 水平内缩 5dp → 2dp,胶囊覆盖满整个 tab 槽(之前盖不全)
- 底栏高度 52dp → 56dp,垂直内缩独立为 5dp
- 按下放大 1.12 → 1.28:静止 46dp → 按下 59dp,超出底栏上下约 1.5dp
3. 滑动不再一顿一顿
两个原因都修了:
- 竞态:点一次 tab 会连走两条路径(手势结束的
release()与animateToValue内的release()),两个release抢同一动画通道,先到的会在滑移途中就把胶囊缩回去。加了 press 世代守卫,新 press 会让旧 release 的回缩作废。 - 弹簧太快:位置弹簧刚度 1000(约 200ms 到位),"按下变大"只有两三帧看不见。改为刚度 420、阻尼比 0.82,行程拉长到约 350ms 且尾段有轻微回弹,去掉了机械匀速的死板感。
安装:下载 APK 覆盖安装(同签名)。
如果还有偏差,最可能是这三个参数,请告诉我具体感受我继续调:
- 按下放大倍数(现 1.28)
- 滑动时长(现约 350ms,刚度 420)
- 静止态淡罩浓度(现 10%)
2.2.0 Dev 5:修复底栏宽度变满屏 + 指示器错位
修复 Dev 4 的两个问题
1. 底栏宽度变成满屏
Dev 4 移植 REAREye 时丢掉了底栏原有的宽度约束。原实现里底栏 Row 自带 fillMaxWidth(0.6f) 限宽,移植后改用 weight(1f) 均分——而 weight 在 wrapContent 的 Row 里会把 Row 撑到父约束上限,于是铺满屏幕。
已恢复屏宽 3/5 的比例,并新增一层容器承载外壳 / 重复内容层 / 指示器,让三者的位移坐标原点一致。
2. 选中指示器与图标错位
指示器的 translationX 是相对容器原点的位移,容器改为满屏后偏移基准也变了,导致指示器与图标不重合。现已统一坐标系。
安装:下载 APK 覆盖安装(同签名)。
说明:底栏的滑移动画、按压形变、连续曲率玻璃形状均保留,这些是 Dev 4 的功能,本次只修布局回归。
2.2.0 Dev 4:液态玻璃底栏重做 + 修复通知进入不弹更新窗
液态玻璃底栏重做
底栏切换动画此前在 1.4.0 Dev 10 被移除(当时实现简陋,效果不佳)。本次按 REAREye 的三层液态玻璃架构重做:
- 选中指示器由连续浮点值驱动(而非 Int 索引),切换页面时胶囊平滑滑移
- 支持按住拖动指示器,甩动时有拉伸/压缩形变并回弹
- 按下时底栏整体轻微膨胀,指尖泛起径向体积光(AGSL 着色器,光斑在玻璃内部)
- 形状换用连续曲率
ContinuousCapsule,折射边缘不再有曲率折角 - 指示器内可见放大的图标内容(新增底栏自身采样源)
更新提示修复
- 修复从更新通知点击进入应用后不弹出更新提示、需手动进设置才触发的问题
(根因:更新通道初值为稳定版,冷启动时检查早于通道读出,Dev 通道用户误查稳定版源导致误判"已是最新") - 更新弹窗现在显示在权限提示弹窗上层,不会被遮挡
安装:下载 APK 后直接覆盖安装(需与已装版本同签名)。
反馈:底栏手感(滑移速度、按下的膨胀幅度)如果偏闷或过冲,告诉我具体感受,我调 pressedScale 与弹簧参数。
2.2.0 Dev 3
2.2.0 Dev 3(versionCode 75)
修复
- 点击超级岛「已完成」按钮后岛不消失:按钮点击与 PendingIntent 链路实测正常,根因是岛通知由 SystemUI 进程以
com.android.systemui身份代发,App 侧的NotificationManager.cancel(id)按包名隔离,对该 id 是空操作- 修复方式:新增
ACTION_DISPATCH_DISMISS(signature 权限保护),App 收到点击后广播过去,由 SystemUI 用自己的 NotificationManager 执行取消 - 回退路径(代发未就绪、通知归本 App)保持原有自身 cancel 行为
- 修复方式:新增
提示
- 装完请重启一次(模块 hook 重新注入)