一键管理所有应用的运营消息 / 营销推广 / 活动推荐类通知通道。仅支持 MIUI / HyperOS。
现在的 App 越来越喜欢把广告塞进通知栏:签到提醒、限时活动、会员专享、猜你喜欢、直播开播、新歌推送……这些通知通常不会叫「广告」,而是挂在「运营消息」「个性化推荐」「活动中心」这类看起来还算正经的通道下。
系统级屏蔽要么一刀切(整个 App 的通知全关,验证码和聊天一起没了),要么靠关键词猜文案(App 换个说法就漏)。通知哨兵从通道这一层下手:读取每个应用的通知通道清单,按关键词识别出营销类通道并直接关闭,正常通道原样保留。
关掉的是通道,不是消息,验证码、支付、聊天、设备提醒都不受影响。
- 模块激活状态、作用域是否勾选
- 已扫描应用数、匹配通道数、已屏蔽通道数
- 当前规则库版本(点击可进作用域列表)
- 设备与环境信息(系统版本、Android API 等级等)
- 按应用分组列出所有已匹配到营销通道的应用,只显示真正有广告的,不刷屏
- 每个应用显示「通道开启 x / y,关闭 z」,一眼看出哪些还没处理
- 顶部搜索框,按应用名或包名过滤
- 单条通道独立开关,可以只关某一条
- 右上角菜单一键全部拦截 / 全部恢复
- 检测结果缓存在进程内,切到设置页再回来不会清空
- 展开某个应用的全部通道
- 显示通道名、通道 ID、重要性等级、当前开关状态
- 逐条切换,支持整组操作
- 列出设备上全部已安装应用
- 把任意应用的通知通道表导出成 JSON(通道 ID、名称、重要性、开关)
- 遇到漏拦时把这份 JSON 附在 Issue 里,是最快的定位方式
- 规则管理:云端规则单独启停、手动同步、自定义规则增删改,热生效
- 主题:跟随系统 / 浅色 / 深色,可选 Monet 取色
- 界面:悬浮底栏、液态玻璃效果、模糊强度
- 语言:简体中文 / English
- 配置导入导出:规则与设置打包成 JSON,方便换机或备份
列表里的开关控制的是通道是否开启,不是「是否已拦截」——这两者反过来是最常见的误解:
- 开 = 通道开启,这类推送会正常送达
- 关 = 通道关闭,这类推送被拦截,不再出现在通知栏
每个应用行显示的「通道开启 x / y,关闭 z」中,z 越大说明拦得越多。关错的通道随时可以再打开,不会丢数据。
默认规则库放在独立仓库 NotiSentry-Rules,格式为 JSON,任何人都可以 fork 后提交改进。
- 自动同步:每次启动应用会静默拉取一次云端规则(12 小时内已同步过则跳过),不打扰用户;设置页也可以手动同步并看到上次同步时间
- 多规则并存:规则库里有多条规则(
official通用规则、默认关闭的aggressive激进规则),正向关键词取并集,每条都可以单独启停 - 排除词全局优先:任意一条规则的排除词命中即放行,避免误伤验证码、支付、聊天等通道
- 停用规则不失效排除词:停用某条规则只是不再用它匹配正向词,它的排除词仍然生效——否则停用「激进规则」反而会让误关变多
- 自定义规则:设置页可新建、编辑、删除自己的规则,与云端规则一起参与匹配
- 离线兜底:从未同步成功时使用内置规则副本,功能不受影响;同步失败时也不会覆盖本地已有规则
- 在 LSPosed 中启用模块,作用域勾选「系统框架」(
android) - 重启手机
- 打开通知哨兵,授予「查询所有应用」权限
- 进入功能页,等待扫描完成,按需开关通道
第 3 步很容易漏掉。Android 11 之后默认只能看到极少数应用包,权限没给或没生效时,扫描结果会是空的或者只有两三个应用。遇到这种情况先在系统设置里确认权限状态,再回到应用点一次「重新检测」。
修改通道开关是即时生效的,不需要重启。升级模块后如果新关键词没生效,点一次「重新检测」或杀掉应用重启即可。
模块通过 LSPosed 在系统框架进程中挂钩 INotificationManager,读取各应用的通知通道数据。通道名和通道 ID 会经过两层词表:
- 识别词表:运营消息、营销推广、活动、推荐、商城、签到、会员、直播、个性化推送、内容社区、悬浮锁屏、抽奖、抢兑……
- 排除词表:验证码、校验码、支付、订单、物流、聊天、通话、安全提醒等功能性词
命中任一条启用规则的正向词、且未命中任何一条规则的排除词的通道,会被标记为营销通道。所有匹配结果在本地计算,不联网、不上传、不收集任何数据——联网的只有拉取规则库这一步。
由于不同系统版本的 INotificationManager 方法签名存在差异(Android 17 上就有改动),模块采用动态枚举方法名并自动填充实参的方式调用,以兼容签名变化。
- 系统:MIUI / HyperOS(依赖 MIUI 的通知通道实现,其他 ROM 未验证)
- Android:13 及以上
- 框架:LSPosed
已在 REDMI K80 Pro(HyperOS 4.0.0.10 / Android 17)+ LSPosed 实测通过。
扫描结果为空:先确认模块已激活、作用域勾选了「系统框架」、已授予「查询所有应用」权限。三项都正常仍然为空,请附 LSPosed 日志提 Issue。
某些广告没被拦:在应用详情里找到那条通道,用通道导出功能保存 JSON,把通道名和通道 ID 一起贴出来。多数情况是通道名用了新的营销说法,补进词表就能解决。
规则同步失败:检查网络连通性(raw.githubusercontent.com 在部分网络下不可达);同步失败不会影响已有规则,可继续使用本地版本。
点击按钮没反应 / 弹窗不显示:请上报系统版本与复现步骤。
- 原作者:迷璐(酷安)
- Android 17 适配与重构:Baymaxawa
- 工程地基:MiuixGuiTemplate
- 组件库:Miuix
- 液态玻璃底栏移植自 SukiSU-Ultra
- 界面参考 MIUI 原生通知图标
- 应用列表获取参考 Hide My Applist