更新记录

1.0.0(2026-06-09)

更新日志:

  1. 新增 App 端通知清理能力。
  2. 支持按 messageId 清除指定通知。
  3. 支持按通知标题和内容兜底匹配通知。
  4. Android 支持清理当前 App 发布的活动通知。
  5. iOS 支持清理已投递通知。
  6. 提供 uni-app x 示例页面和使用说明文档。

平台兼容性

uni-app x(4.76)

Chrome Safari Android iOS 鸿蒙 微信小程序
- - 5.0 12 12 -

Notification Cleaner 使用示例

一个适用于 uni-app x App 端的通知清理 UTS 插件,可按消息标识、标题或内容清除通知栏中的指定通知。

能力

  • Android:遍历当前 App 的活动通知,并按消息标识、标题或内容清除匹配通知
  • iOS:通过 UNUserNotificationCenter 清除已投递通知
  • HarmonyOS:预留同名接口,当前返回 false

引入插件

import { NotificationCleaner } from '@/uni_modules/notification-cleaner'

基础用法

const cleared = NotificationCleaner.clearByMessage(
  'msg_10001',
  '系统通知',
  '您有一条新消息'
)

返回值为 boolean

  • true:已发送清理请求,或已匹配并清理通知
  • false:当前平台不支持、参数为空、系统通知列表不可用,或未找到可清理通知

参数说明

clearByMessage(messageId, title, content)

  • messageId:业务消息 ID,优先用于匹配通知
  • title:通知标题,messageId 匹配不到时可用于兜底匹配
  • content:通知内容,messageId 匹配不到时可用于兜底匹配

三个参数不建议同时为空。实际业务中建议优先传入稳定的 messageId

准备测试通知

请先通过业务推送、本地通知或 uni-push 创建一条通知,并确保 payload、标题或内容中包含可匹配的信息。

如果项目已经集成 uni-push,可参考:

uni.createPushMessage({
  title: '系统通知',
  content: '您有一条新消息',
  cover: false,
  sound: 'system',
  payload: {
    messageId: 'msg_10001',
    title: '系统通知',
    content: '您有一条新消息'
  }
})

注意:uni.createPushMessage 需要自定义基座包含 uni-push 模块。插件本身不依赖 uni-push。

创建通知后,再调用:

NotificationCleaner.clearByMessage('msg_10001', '系统通知', '您有一条新消息')

即可验证通知清理效果。

推送点击场景

在真实业务中,常见用法是在用户点击推送后,读取推送 payload 中的消息标识,然后清除通知栏中的对应通知:

function clearClickedNotification(payload : UTSJSONObject | null) : void {
  if (payload == null) return

  const messageId = payload.getString('messageId') ?? ''
  const title = payload.getString('title') ?? ''
  let content = payload.getString('content') ?? ''
  if (content == '') content = payload.getString('body') ?? ''

  NotificationCleaner.clearByMessage(messageId, title, content)
}

Android 说明

Android 端通过 NotificationManager.getActiveNotifications() 获取当前 App 的活动通知,仅清除当前 App 自己发布的通知。

要求:

  • Android 6.0 及以上
  • 通知需要由当前 App 创建
  • 推荐在 payload、extras 或通知内容中带上业务 messageId

iOS 说明

iOS 端通过 UNUserNotificationCenter 清除已投递通知:

  • 优先尝试按 messageId 作为通知 identifier 清理
  • 同时会遍历已投递通知,按 userInfo、标题、内容做兜底匹配

建议创建本地通知或远程通知时,在 payload 中携带业务 messageId

HarmonyOS 说明

HarmonyOS 当前提供同名接口,默认返回 false。如果业务需要鸿蒙通知清理能力,可在此接口基础上继续扩展。

运行要求

本插件为 App 原生能力插件,请使用自定义基座或正式打包进行测试。

完整页面示例

项目首页 pages/index/index.uvue 已包含:

  • 测试说明
  • 按消息 ID 清除通知
  • 重置示例参数

可直接运行示例项目查看效果。

隐私、权限声明

1. 本插件需要申请的系统权限列表:

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

插件本身不主动采集用户个人信息,不向任何服务器发送数据。插件仅在调用清理通知方法时,读取调用方传入的 messageId、title、content 参数,并在本机系统通知列表中查找和清除匹配通知。相关数据仅用于本地通知匹配与清理,不会被插件存储、上传或用于其他用途。

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率: