前言
通知是应用与用户沟通的重要渠道,用于消息提醒、进度展示等。@pura/harmony-utils的NotificationUtil封装了通知发送方法,支持基本文本通知。本文将从API说明、代码实战、进阶用法、常见问题等多个维度进行全面讲解,帮助开发者快速掌握并应用到实际项目中。
一、NotificationUtil基本核心API
NotificationUtil提供了以下基本通知方法:
| 方法 | 说明 | 返回类型 | 使用场景 |
|---|---|---|---|
publish(title, text) | 发送基本通知 | void | 消息提醒 |
publishWithId(id, title, text) | 发送带ID通知 | void | 可更新通知 |
cancel(id) | 取消通知 | void | 清除通知 |
cancelAll() | 取消全部通知 | void | 全量清除 |
1.1 核心特性
- 简洁易用:封装复杂API为一行调用,降低使用门槛
- 类型安全:完整的TypeScript类型定义,编译期即可发现错误
- 异常处理:内置异常捕获机制,避免运行时崩溃
- ID管理:支持通知ID,可更新和取消特定通知
1.2 通知类型对照
| 类型 | 方法 | 特点 | 适用场景 |
|---|---|---|---|
| 基本通知 | publish | 简单文本 | 普通消息 |
| 带ID通知 | publishWithId | 可更新/取消 | 下载进度 |
二、完整使用步骤
2.1 安装依赖
ohpminstall@pura/harmony-utils2.2 发送基本通知
import{NotificationUtil}from'@pura/harmony-utils';Button('发送基本通知').width('100%').onClick(()=>{try{NotificationUtil.publish('新消息','您有一条未读消息');this.result='通知已发送 🔔';}catch(e){this.result='异常: '+e;}})2.3 发送带ID通知
Button('发送带ID通知').width('100%').onClick(()=>{try{NotificationUtil.publishWithId(1001,'下载通知','文件下载中...');this.result='通知已发送 🔔\nID: 1001\n可用于后续更新或取消';}catch(e){this.result='异常: '+e;}})2.4 取消通知
Button('取消通知').width('100%').onClick(()=>{try{NotificationUtil.cancel(1001);this.result='通知已取消 ✅';}catch(e){this.result='异常: '+e;}})三、完整页面示例
import{NotificationUtil}from'@pura/harmony-utils';@Entry@Componentstruct NotifBasicDemo{@Stateresult:string='';build(){Column({space:12}){Button('发送通知').width('100%').onClick(()=>{try{NotificationUtil.publish('提示','操作完成');this.result='通知已发送';}catch(e){this.result='异常: '+e;}});Button('取消全部').width('100%').onClick(()=>{NotificationUtil.cancelAll();this.result='已取消全部通知';});Text(this.result).fontSize(14).fontColor('#333333')}.padding(16)}}四、进阶用法
4.1 下载进度通知
import{NotificationUtil}from'@pura/harmony-utils';constDOWNLOAD_NOTIF_ID=2001;functionupdateDownloadProgress(progress:number):void{NotificationUtil.publishWithId(DOWNLOAD_NOTIF_ID,'下载中',`进度:${progress}%`);}functionfinishDownload():void{NotificationUtil.publishWithId(DOWNLOAD_NOTIF_ID,'下载完成','文件已保存');}4.2 通知管理器
classNotificationManager{privatestaticcounter=3000;staticsend(title:string,text:string):number{letid=NotificationManager.counter++;NotificationUtil.publishWithId(id,title,text);returnid;}staticcancelById(id:number):void{NotificationUtil.cancel(id);}}五、注意事项
- 权限要求:发送通知需要通知权限
- 通知渠道:部分系统需要创建通知渠道
- 频率限制:避免短时间内发送大量通知
- 初始化依赖:使用前需确保
AppUtil.init()已调用 - 用户设置:用户可能关闭应用通知
六、常见问题
Q1: 通知发送后看不到?
检查通知权限是否已授予,以及系统通知设置是否开启。
Q2: 带ID通知如何更新?
使用相同ID再次调用publishWithId即可更新通知内容。
Q3: cancel()和cancelAll()有什么区别?
cancel()取消指定ID的通知,cancelAll()取消所有通知。
Q4: 通知可以点击跳转吗?
基本通知不支持点击跳转,需要使用WantAgent配置点击行为。
总结
NotificationUtil的基本通知方法为应用消息提醒提供了便捷支持。本文详细介绍了核心API、使用步骤、完整示例、进阶用法以及常见问题的解决方案。开发者可以利用通知功能及时向用户传递重要信息。
本文基于
@pura/harmony-utils工具库,更多功能请参考官方文档与后续系列文章。