如何设置应用通知角标
==========

#### 问题现象

应用接收到消息或通知后会有通知角标提示，当点击阅读后，桌面的应用通知角标依然存在。如何设置应用通知角标，实现角标的累加和清零。

#### 背景知识

通知角标设置按场景分为[Notification Kit](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/notification-kit)和[Push Kit](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/push-kit-guide)两种通知角标，两种场景实现不同。

*   [Notification Kit](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/notification-overview?ha_source=sousuo&ha_sourceId=89000251)：用户通知服务，为开发者提供本地通知发布通道，应用通过Notification Kit将应用产生的通知在客户端本地推送给用户。当应用进程处于运行时，开发者可以使用Notification Kit向用户发布通知。当应用进程终止后，本地通知发布通道关闭，开发者需要接入[Push Kit](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/push-kit-introduction)进行云侧离线通知的发布。
*   [Push Kit](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/push-kit-introduction)：推送服务，是华为提供的消息推送平台，建立了从云端到终端的消息推送通道，可以为应用实现实时消息推送，提升用户感知度。

#### 解决方案

场景一、Notification通知角标。角标设置方式支持如下两种方式：

*   发布通知时，在[NotificationRequest](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-inner-notification-notificationrequest#notificationrequest-1)的badgeNumber字段里携带：桌面收到通知后，在原角标数上累加、呈现。
*   调用接口[setBadgeNumber()](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-notificationmanager#notificationmanagersetbadgenumber10)设置，桌面按设置的角标数呈现：使用此方法首先需要获取当前未读通知数量，在后续通知发布成功或阅读通知内容后，使用setBadgeNumber管理增减逻辑。可通过setBadgeNumber设置为0，实现清理角标数量。

![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/4a/v3/DlrlzT0GQf-a8WKupH923g/note_3.0-zh-cn.png?HW-CC-KV=V1&HW-CC-Date=20260709T134335Z&HW-CC-Expire=86400&HW-CC-Sign=9FB24541690715FC7BD29DF0B5AFA699A29C6D5C83A9FC7065F4A063798E3260)

setBadgeNumber为异步接口，使用setBadgeNumber连续设置角标时，为了确保执行顺序符合预期，需要确保上一次设置完成后才能进行下一次设置。使用async/await控制角标设置，可以参考[示例代码](https://gitcode.com/HarmonyOS_Samples/custom-notification-badge/blob/master/notification/src/main/ets/notification/NotificationManagementUtil.ets)。

场景二、Push通知角标设置。

发送[AlertPayload 通知消息](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/push-scenariozed-api-request-param#section1152516418157)时携带[Badge](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/push-scenariozed-api-request-param#section266310382145)字段来设置应用收到通知消息后以数字的形式展示角标，提醒用户查看消息，具体参考Push Kit[通知角标](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/push-send-alert#section077534865917)实现。角标设置方式支持如下两种方式：

*   自增长累加效果，可以在[Badge](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/push-scenariozed-api-request-param#section266310382145)字段设置addNum为应用角标需要累加数字即可。
*   [Badge](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/push-scenariozed-api-request-param#section266310382145)字段设置setNum，设置的值为角标实际显示数字，且setNum优先级高于addNum。

![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/3e/v3/x1wwgLlvTESpbbLww00Qdg/note_3.0-zh-cn.png?HW-CC-KV=V1&HW-CC-Date=20260709T134335Z&HW-CC-Expire=86400&HW-CC-Sign=D83A3176DC6A0212A1272F3782A5E36C517B31F08C54EDFC0F48EAF1A36E22F2)

打开应用或者点击、清理通知消息并不会清理角标数字，可通过[setBadgeNumber()](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-notificationmanager#notificationmanagersetbadgenumber10)方法清理角标。

#### 常见FAQ

Q：[notificationManager.setBadgeNumber](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-notificationmanager#notificationmanagersetbadgenumber10)调用成功，但是看不到通知角标。

A：角标显示应用需要完成[请求通知授权](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/notification-enable)，确认“桌面角标”选项已开启。如果在通知管理中关闭“桌面角标”，则无法显示角标数，可在应用中通过[notificationManager.openNotificationSettings](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-notificationmanager#notificationmanageropennotificationsettings13)完成二次申请授权。