| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 9 个月前 | ||
| 9 个月前 | ||
| 9 个月前 | ||
| 9 个月前 | ||
| 9 个月前 | ||
| 9 个月前 | ||
| 9 个月前 | ||
| 9 个月前 | ||
| 9 个月前 | ||
| 9 个月前 | ||
| 9 个月前 |
Notification Kit(用户通知服务)
介绍
本示例展示了在一个Stage模型中,开发者可借助Notification Kit(用户通知服务)将应用产生的通知直接在客户端本地推送给用户,本地通知根据通知类型及发布场景会产生对应提醒。
效果预览
| 项目主界面 | 弹窗通知授权 | 半模态弹窗授权 |
|---|---|---|
![]() |
![]() |
![]() |
| 增加角标 | 减少角标个数 |
|---|---|
![]() |
![]() |
| 发布普通文本类型通知 | 发布多行文本类型通知 | 发布进度条类型通知 |
|---|---|---|
![]() |
![]() |
![]() |
| 更新进度条类型通知 | 取消单行文本类型通知 |
|---|---|
![]() |
![]() |
使用说明
-
请求通知授权,应用需要获取用户授权才能发送通知。
-
管理通知角标,针对未读的通知,系统提供了角标设置接口,将未读通知个数显示在桌面图标的右上角角标上。 通知增加时,角标上显示的未读通知个数需要增加。 通知被查看后,角标上显示的未读通知个数需要减少,没有未读通知时,不显示角标。
-
管理通知渠道,系统支持多种通知渠道,不同通知渠道对应的通知提醒方式不同,可以根据应用的实际场景选择适合的通知渠道,并对通知渠道进行管理(支持创建、查询、删除等操作)。
-
发布通知
-
更新通知,更新已发布的通知。主要用于上传下载进度更新、IM会话消息更新等场景。
-
取消通知,用户收到通知提醒后,点击通知并拉起应用到前台时,应用可以选择取消某条通知或所有通知。
-
跨设备协同通知,跨设备协同通知旨在以手机为中枢,实现与手表等其它设备的通知消息协同交互。
-
清除跨设备场景下的重复通知,从API version 20开始,为了避免不同渠道发布的通知重复打扰用户(例如,手机协同到当前设备的通知与Push推送服务发布的通知重复),可以使用通知去重功能,清除跨设备场景下的重复通知。
工程目录
给出项目中关键的目录结构并描述它们的作用,示例如下:
entry/src/
├── main
│ ├── ets
│ │ ├── entryability
│ │ │ └── EntryAbility.ets
│ │ ├── entrybackupability
│ │ │ └── EntryBackupAbility.ets
│ │ ├── filemanger
│ │ │ ├── AddWantAgent.ets
│ │ │ ├── CancelNotification.ets
│ │ │ ├── ClearDuplicateNotifications.ets
│ │ │ ├── ManageNotificationBadges.ets
│ │ │ ├── ManageNotificationWays.ets
│ │ │ ├── PublishNotification.ets
│ │ │ ├── RequestEnableNotification.ets
│ │ │ └── UpdateNotification.ets
│ │ ├── pages
│ │ │ └── Index.ets
│ ├── module.json5
│ └── resources
└── ohosTest
└── ets
└── test
├── Ability.test.ets // 自动化测试代码
└── List.test.ets // 测试套执行列表
具体实现
- 请求通知授权,在通知发布前调用requestEnableNotification()接口,弹窗让用户选择是否允许发送通知。当用户拒绝授权后,将无法通过该接口再次拉起弹窗。如果应用需要向用户再次申请通知授权,则可以使用openNotificationSettings接口拉起通知管理半模态弹窗。详情可参见请求通知授权。
- 管理通知角标,其中增加角标数支持两种方法,第一种是发布通知时,在NotificationRequest的badgeNumber字段里携带,桌面收到通知后,在原角标数上累加、呈现,第二种是调用接口setBadgeNumber()设置,桌面按设置的角标数呈现。而减少角标数,目前仅支持通过setBadgeNumber()设置。详情可参见管理通知角标。
- 管理通知渠道,可以使用addSlot()创建通知渠道,还可以在发布通知的NotificationRequest中携带notificationSlotType字段,如果对应渠道不存在,会自动创建。其它接口介绍详情参见相关API文档。详情可参见管理通知渠道。
- 发布文本类型通知,通知发布接口publish()详情参见相关API文档。通知发布的详情可通过入参NotificationRequest来进行指定,可以包括通知内容、通知ID、通知的通道类型和通知发布时间等信息。其中文本类型有两种:第一种为NOTIFICATION_CONTENT_BASIC_TEXT普通文本类型,第二种为NOTIFICATION_CONTENT_MULTILINE多行文本类型。详情可参见发布文本类型通知。
- 发布进度条类型通知,目前系统模板仅支持进度条模板,首先通过isSupportTemplate()查询模板是否支持接口,目前仅支持进度条模板。构造进度条模板,name字段当前需要固定配置为downloadTemplate。详情可参见发布进度条类型通知。
- 为通知添加行为意图,首先创建WantAgentInfo信息,然后调用getWantAgent()方法进行创建WantAgent,最后构造NotificationRequest对象,并发布携带WantAgent的通知。详情可参见为通知添加行为意图。
- 更新通知,通知更新可通过入参NotificationRequest携带updateOnly字段来指定,不指定该字段默认为false。当updateOnly为true时,若相同ID通知存在,则更新通知;若相同ID通知不存在,则更新失败,不创建新的通知。当updateOnly为false时,若相同ID通知存在,则更新通知;若相同ID通知不存在,则创建通知。详情可参见更新通知。
- 取消通知,首先发布通知,参考发布文本类型通知,然后取消通知,其中通知取消有两种方法,第一种是调用cancel()取消指定的通知,第二种是调用cancelAll()取消所有该应用发布的通知。详情可参见取消通知。
- 清除跨设备场景下的重复通知,应用发送通知时携带唯一标识字段appMessageId,分布式通知接收到多渠道发布的通知后,会根据该字段进行判断,从而实现通知去重。详情可参见清除跨设备场景下的重复通知。
相关权限
不涉及。
依赖
不涉及。
约束与限制
- 本示例支持标准系统上运行,支持设备:RK3568;
- 本示例支持API20版本SDK,版本号:6.0.0.47;
- 本示例已支持使DevEco Studio 6.0.0 Release (构建版本:6.0.0.858,构建 2025年11月11日)编译运行;
- 高等级APL特殊签名说明:无;
下载
如需单独下载本工程,执行如下命令:
git init
git config core.sparsecheckout true
echo code/DocsSample/Notification-Kit/Notification > .git/info/sparse-checkout
git remote add origin https://gitcode.com/openharmony/applications_app_samples.git
git pull origin master









