1# 管理通知角标 2 3针对未读的通知,系统提供了角标设置接口,将未读通知个数显示在桌面图标的右上角角标上。 4 5通知增加时,角标上显示的未读通知个数需要增加。 6 7通知被查看后,角标上显示的未读通知个数需要减少,没有未读通知时,不显示角标。 8 9 10## 接口说明 11 12当角标设定个数取值小于或等于0时,表示清除角标。取值大于99时,通知角标将显示99+。 13 14- 增加角标数,支持如下两种方法: 15 16 - 发布通知时,在[NotificationRequest](../reference/apis-notification-kit/js-apis-inner-notification-notificationRequest.md#notificationrequest-1)的badgeNumber字段里携带,桌面收到通知后,在原角标数上累加、呈现。 17 18 - 调用接口[setBadgeNumber()](../reference/apis-notification-kit/js-apis-notificationManager.md#notificationmanagersetbadgenumber10)设置,桌面按设置的角标数呈现。 19 20- 减少角标数,目前仅支持通过[setBadgeNumber()](../reference/apis-notification-kit/js-apis-notificationManager.md#notificationmanagersetbadgenumber10)设置。 21 22 | **接口名** | **描述** | 23 | -------- | -------- | 24 | setBadgeNumber(badgeNumber: number): Promise\<void\> | 设置角标个数。 | 25 26 27## 开发步骤 28 291. 导入NotificationManager模块。 30 31 ```ts 32 import { notificationManager } from '@kit.NotificationKit'; 33 import { hilog } from '@kit.PerformanceAnalysisKit'; 34 import { BusinessError } from '@kit.BasicServicesKit'; 35 36 const TAG: string = '[PublishOperation]'; 37 const DOMAIN_NUMBER: number = 0xFF00; 38 ``` 39 402. 增加角标个数。 41 42 发布通知在[NotificationRequest](../reference/apis-notification-kit/js-apis-inner-notification-notificationRequest.md#notificationrequest-1)的badgeNumber字段里携带,可参考[通知发布](text-notification.md)章节。 43 44 示例为调用setBadgeNumber接口增加角标,在发布完新的通知后,调用该接口。 45 46 ```ts 47 let badgeNumber: number = 9; 48 notificationManager.setBadgeNumber(badgeNumber).then(() => { 49 hilog.info(DOMAIN_NUMBER, TAG, `Succeeded in setting badge number.`); 50 }).catch((err: BusinessError) => { 51 hilog.error(DOMAIN_NUMBER, TAG, `Failed to set badge number. Code is ${err.code}, message is ${err.message}`); 52 }); 53 ``` 54 553. 减少角标个数。 56 57 一条通知被查看后,应用需要调用接口设置剩下未读通知个数,桌面刷新角标。 58 59 ```ts 60 let badgeNumber: number = 8; 61 notificationManager.setBadgeNumber(badgeNumber).then(() => { 62 hilog.info(DOMAIN_NUMBER, TAG, `Succeeded in setting badge number.`); 63 }).catch((err: BusinessError) => { 64 hilog.error(DOMAIN_NUMBER, TAG, `Failed to set badge number. Code is ${err.code}, message is ${err.message}`); 65 }); 66 ``` 67 68## 常见问题 69 70由于setBadgeNumber为异步接口,使用setBadgeNumber连续设置角标时,为了确保执行顺序符合预期,需要确保上一次设置完成后才能进行下一次设置。 71 72- 反例 73 74 每次接口调用是相互独立的、没有依赖关系的,实际执行时无法保证调用顺序。 75 76 示例如下: 77 78 ```ts 79 let badgeNumber: number = 10; 80 notificationManager.setBadgeNumber(badgeNumber).then(() => { 81 hilog.info(DOMAIN_NUMBER, TAG, `setBadgeNumber 10 success.`); 82 }); 83 badgeNumber = 11; 84 notificationManager.setBadgeNumber(badgeNumber).then(() => { 85 hilog.info(DOMAIN_NUMBER, TAG, `setBadgeNumber 11 success.`); 86 }); 87 ``` 88 89- 正例 90 91 多次接口调用存在依赖关系,确保上一次设置完成后才能进行下一次设置。 92 93 示例如下: 94 95 ```ts 96 let badgeNumber: number = 10; 97 notificationManager.setBadgeNumber(badgeNumber).then(() => { 98 hilog.info(DOMAIN_NUMBER, TAG, `setBadgeNumber 10 success.`); 99 badgeNumber = 11; 100 notificationManager.setBadgeNumber(badgeNumber).then(() => { 101 hilog.info(DOMAIN_NUMBER, TAG, `setBadgeNumber 11 success.`); 102 }); 103 }); 104 ``` 105