Skip to content

Releases: ytdttj/NotificationCleaner

2.2.1 Dev 1

2.2.1 Dev 1 Pre-release
Pre-release

Choose a tag to compare

@ytdttj ytdttj released this 28 Oct 12:17

【修复】
1.修复了一条特殊通知可卡死系统通知服务的问题
2.修复了 LSPosed 模式下已关闭的规则仍在拦截的问题
3.修复了真人私信被误拦、灭屏后通知成批延迟的问题
4.修复了学习标注被覆盖丢失、取消学习不回滚、学习成果不生效的问题
5.修复了通知含“>”被无条件拦截且无法翻案的问题
6.修复了设置页二级页面跳转被劫持等问题

【新增】
1.新增「此渠道一律拦截」
2.新增 App 级学习先验:同一 App 学满 3 条广告后,换任何渠道的新广告都直接拦

【优化】
1.重训基础模型:伪装营销直接识别,真人私信零误杀
2.隐私加固:通知数据不进云备份,更新包增加签名校验
3.高级功能等区域滚动更流畅

更新后请重启一次手机(模块改动需重启生效)

2.2.0

Choose a tag to compare

@ytdttj ytdttj released this 08 Oct 08:37

【新增】
1.底栏液态玻璃效果重做:切换页面时胶囊平滑滑动,可按住拖动并回弹
2.底栏选中指示器的质感重做
3.优化 SystemUI/xmsf 作用域热重载,改动后无需重启即可生效
【修复】
1.修复了手机灭屏后通知延迟、上岛不及时的问题
2.修复了超级岛偶发不弹出的问题
3.修复了点击超级岛「已完成」按钮后岛不消失的问题
4.修复了微信分享文案被误当成交易而上岛的问题
5.修复了余额类通知被误当成交易而上岛的问题
6.修复了底栏宽度变成满屏、指示器错位的问题
7.修复了选中胶囊位置偏高、底部文字露在胶囊外的问题
8.修复了胶囊圆角不同心、选中放大幅度不明显的问题
9.修复了收到通知时不弹更新提示窗的问题

更新后请重启一次手机(模块改动需重启生效)

2.2.0 Dev 10

2.2.0 Dev 10 Pre-release
Pre-release

Choose a tag to compare

@ytdttj ytdttj released this 08 Oct 08:14

【修复】
1.修复了手机灭屏后通知延迟、上岛不及时的问题
2.修复了微信分享文案被误当成交易而上岛的问题
3.修复了余额类通知被误当成交易而上岛的问题

更新后请重启一次手机(模块改动需重启生效)

2.2.0 Dev 9

2.2.0 Dev 9 Pre-release
Pre-release

Choose a tag to compare

@ytdttj ytdttj released this 04 Oct 11:14

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:修复胶囊圆角对齐与放大幅度

Choose a tag to compare

@ytdttj ytdttj released this 03 Oct 04:28

修复两个视觉问题

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:修复选中胶囊位置偏高

Choose a tag to compare

@ytdttj ytdttj released this 03 Oct 02:59

修复:胶囊没盖住按钮文字

真机截图显示胶囊盖住了图标,但底部的标签文字露在胶囊外面。

原因:垂直方向坐标错位

底栏外壳带 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:底栏指示器质感重做

Choose a tag to compare

@ytdttj ytdttj released this 03 Oct 02:49

按真机反馈重做指示器质感

对比 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:修复底栏宽度变满屏 + 指示器错位

Choose a tag to compare

@ytdttj ytdttj released this 03 Oct 01:53

修复 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:液态玻璃底栏重做 + 修复通知进入不弹更新窗

Choose a tag to compare

@ytdttj ytdttj released this 03 Oct 01:27

液态玻璃底栏重做

底栏切换动画此前在 1.4.0 Dev 10 被移除(当时实现简陋,效果不佳)。本次按 REAREye 的三层液态玻璃架构重做:

  • 选中指示器由连续浮点值驱动(而非 Int 索引),切换页面时胶囊平滑滑移
  • 支持按住拖动指示器,甩动时有拉伸/压缩形变并回弹
  • 按下时底栏整体轻微膨胀,指尖泛起径向体积光(AGSL 着色器,光斑在玻璃内部)
  • 形状换用连续曲率 ContinuousCapsule,折射边缘不再有曲率折角
  • 指示器内可见放大的图标内容(新增底栏自身采样源)

更新提示修复

  • 修复从更新通知点击进入应用后不弹出更新提示、需手动进设置才触发的问题
    (根因:更新通道初值为稳定版,冷启动时检查早于通道读出,Dev 通道用户误查稳定版源导致误判"已是最新")
  • 更新弹窗现在显示在权限提示弹窗上层,不会被遮挡

安装:下载 APK 后直接覆盖安装(需与已装版本同签名)。

反馈:底栏手感(滑移速度、按下的膨胀幅度)如果偏闷或过冲,告诉我具体感受,我调 pressedScale 与弹簧参数。

2.2.0 Dev 3

2.2.0 Dev 3 Pre-release
Pre-release

Choose a tag to compare

@ytdttj ytdttj released this 02 Oct 12:42

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 重新注入)