更新记录

1.0.0(2026-06-11)

基于 UTS 的本地通知插件,支持 Android、iOS、HarmonyOS 三端统一 API,支持uniapp和uniappX:多种通知样式、权限管理、清除通知、常驻与进度展示。


平台兼容性

uni-app(3.7.9)

Vue2 Vue3 Chrome Safari app-vue app-nvue Android iOS 鸿蒙
- - - - -
微信小程序 支付宝小程序 抖音小程序 百度小程序 快手小程序 京东小程序 鸿蒙元服务 QQ小程序 飞书小程序 小红书小程序 快应用-华为 快应用-联盟
- - - - - - - - - - - -

uni-app x(3.7.9)

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

ba-notify-u

基于 UTS 的本地通知插件,支持 Android、iOS、HarmonyOS 三端统一 API,可用于消息提醒、下载进度、常驻状态等场景。

  • 同时支持 uni-appuni-app x
  • 统一接口:showclearByIdclear、权限查询与申请、跳转系统通知设置
  • Android 支持多种通知样式(大图、按钮、HeadUp、消息盒子、进度条、常驻)
  • iOS / Harmony 对不支持的能力做降级展示(不抛 9010003,保证一套代码可运行)

快速开始

import {
  show,
  clearById,
  clear,
  isNotifyPermission,
  requestPermissions,
  isNotifyEnabled,
  goSetNotify
} from '@/uni_modules/ba-notify-u';

// 普通通知
show({
  channelID: 'default',
  channelName: '默认通道',
  ID: 1001,
  title: '标题',
  content: '通知内容',
  extend: '自定义透传参数',
  success: (res) => console.log(res),
  fail: (err) => console.error(err),
  complete: (res) => console.log(res)
});

// 常驻 / 点击不消失(Android ongoing;iOS 点击后静默重投递)
show({
  ID: 2001,
  title: '下载中',
  content: '正在下载…',
  autoCancel: false,
  ongoing: true
});

// 权限
requestPermissions({
  success: (res) => console.log(res.isNotifyPermission),
  complete: (res) => console.log(res)
});

// 清除
clearById({ ID: 1001 });
clear();

API 说明

show(options)

展示本地通知。

字段 类型 必填 说明
channelID string 通道 ID,Android 8+ 建议设置,默认 '1'
channelName string 通道名称,默认 '默认'
ID number 通知 ID,用于更新/清除,默认 0
notifyType 0\|1\|2\|3\|4\|5\|6\|99 通知类型,默认 0
title string 标题
content string 正文
ticker string 状态栏滚动文字(Android)/ 副标题(iOS subtitle)
isSound boolean 是否响铃,默认 true
isVibrate boolean 是否振动(Android),默认 true
isLights boolean 是否闪灯(Android),默认 true
autoCancel boolean 点击后是否消失,默认 true
ongoing boolean 是否常驻(Android setOngoing),默认 false
badgeNumber number 角标数量
thumbUrl / bigUrl string 缩略图 / 大图 URL 或本地路径(Android 大图)
leftBtnText / rightBtnText string 左右按钮文案
msgList string[] 消息盒子多行列表
maxProgress / progress number 进度最大值 / 当前值
indeterminate boolean 是否不确定进度
finishText string 进度完成后的文案
extend string 点击透传扩展字段
success / fail / complete function 回调

notifyType 说明:

含义
0 普通通知
1 大图
2 按钮
3 HeadUp 高优先级
4 消息盒子(多行列表)
5 多行长文本
6 进度
99 预留 / 常驻语义(配合 ongoing 使用)

clearById(options) / clear(options?)

按 ID 清除或清除全部通知。

isNotifyPermission(options)

查询是否拥有通知权限(Android 13+ 为运行时权限;iOS 为授权状态)。

requestPermissions(options)

申请通知权限。

  • iOS / Harmony:弹系统授权后通过 complete 返回最终状态
  • Android 13+:弹出授权框后,需在宿主 Activity 转发权限结果(见下方配置)

isNotifyEnabled(options)

查询系统通知总开关是否开启。

goSetNotify()

跳转系统通知设置页(无返回值)。


三端能力差异

能力 Android iOS Harmony
普通通知
大图 降级为普通 降级为长文本
按钮 ✅ Action 降级(userInfo 透传) ✅ WantAgent
HeadUp 降级 高优先级槽降级
消息盒子 ✅ Inbox 降级(msgList 未拼 body) ✅ 多行
多行 / 长文本 ✅ BigText 正文换行 ✅ MULTILINE
进度条 ✅ 系统进度条 文案 x/y 模板 / 长文本降级
常驻 ongoing ✅ 不可侧滑删 ❌ 可侧滑删 SERVICE 槽降级
autoCancel: false ✅ 点击后静默重投递 SERVICE 槽降级

说明:当前版本对 iOS / Harmony 不支持的通知类型不会返回错误码 9010003,而是降级为最接近的系统样式,便于一套业务代码三端运行。若需严格校验,请在业务层按平台分支。

iOS 特别说明

  • 无系统级 ongoing:侧滑始终可删除
  • autoCancel: false / ongoing: true:点击通知打开 App 后,插件会静默重新投递同 ID 通知,尽量模拟「点击不消失」
  • 启动时若将 badgeNumber 设为 0,可能导致通知中心通知被一并清除,请注意角标逻辑

权限与配置

Android

插件 config.json 已声明:

  • android.permission.POST_NOTIFICATIONS(Android 13+)

Android 13+ 申请权限时,需在宿主 Activity 的 onRequestPermissionsResult 中转发到插件(requestCode = 301):

// 原生 Android 工程 AppActivity 示例
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
    super.onRequestPermissionsResult(requestCode, permissions, grantResults);
    // UTS 编译后会生成对应桥接,按官方文档在 Activity 中转发
}

uni-app x 项目通常由框架自动处理 UTS 插件权限回调;若 requestPermissionscomplete 未在用户操作后触发,请检查 Activity 是否正确转发。

网络大图需主工程具备网络访问能力(一般已有 INTERNET 权限)。

iOS

  • 最低部署版本:iOS 12(deploymentTarget: 12
  • 首次使用需调用 requestPermissions 申请 Alert / Sound / Badge
  • 点击通知的 extend 等字段在 userInfo 中,需自行在 App 启动 / 前后台切换逻辑中解析

Harmony

  • 使用 Notification Kit,需用户开启通知开关
  • 可调用 requestPermissions 引导 requestEnableNotification

错误码

errCode 说明
9010001 参数错误
9010002 权限拒绝
9010003 当前平台不支持该通知类型(接口预留,当前实现以降级为主)

点击回调(extend)

Android 点击通知会拉起 io.dcloud.PandoraEntry,Intent 携带:

  • BaNotifyChannelIDBaNotifyIDnotifyTypeextend
  • 按钮通知额外携带 Notify-ClickleftBtn / rightBtn

请在应用入口(如 onShow / 冷启动参数)解析上述字段处理业务。


参考

隐私、权限声明

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

android.permission.POST_NOTIFICATIONS(Android 13+ 发送通知需运行时申请)

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

插件不采集任何数据

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