更新记录
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-app 与 uni-app x
- 统一接口:
show、clearById、clear、权限查询与申请、跳转系统通知设置 - 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 插件权限回调;若 requestPermissions 的 complete 未在用户操作后触发,请检查 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 携带:
BaNotifyChannelID、BaNotifyID、notifyType、extend- 按钮通知额外携带
Notify-Click(leftBtn/rightBtn)
请在应用入口(如 onShow / 冷启动参数)解析上述字段处理业务。

收藏人数:
购买源码授权版(
试用
赞赏(0)
下载 14376
赞赏 6
下载 12235026
赞赏 1920
赞赏
京公网安备:11010802035340号