針對未讀的通知,系統提供了角標設置接口,將未讀通知個數顯示在桌面圖標的右上角角標上。
通知增加時,角標上顯示的未讀通知個數需要增加。
通知被查看后,角標上顯示的未讀通知個數需要減少,沒有未讀通知時,不顯示角標。
一、接口說明
當角標設定個數取值0時,表示清除角標。取值大于99時,通知角標將顯示99+。
1、增加角標數,支持如下兩種方法:
(1)發布通知時,在NotificationRequest的badgeNumber字段里攜帶,桌面收到通知后,在原角標數上累加、呈現。
(2)調用接口setBadgeNumber()設置,桌面按設置的角標數呈現。
2、減少角標數,目前僅支持通過setBadgeNumber()設置。
接口名 | 描述 |
---|---|
setBadgeNumber(badgeNumber: number, callback: AsyncCallback<void>): void | 設置角標個數。 |
二、開發步驟?
1、導入NotificationManager模塊。
import { notificationManager } from '@kit.NotificationKit';
import { hilog } from '@kit.PerformanceAnalysisKit';
import { BusinessError } from '@kit.BasicServicesKit';const TAG: string = '[PublishOperation]';
const DOMAIN_NUMBER: number = 0xFF00;
2、增加角標個數。
發布通知在NotificationRequest的badgeNumber字段里攜帶,可參考通知發布章節。
示例為調用setBadgeNumber接口增加角標,在發布完新的通知后,調用該接口。
let setBadgeNumberCallback = (err: BusinessError): void => {if (err) {hilog.error(DOMAIN_NUMBER, TAG, `Failed to set badge number. Code is ${err.code}, message is ${err.message}`);return;}hilog.info(DOMAIN_NUMBER, TAG, `Succeeded in setting badge number.`);
}let badgeNumber = 9;
notificationManager.setBadgeNumber(badgeNumber, setBadgeNumberCallback);
3、減少角標個數。
一條通知被查看后,應用需要調用接口設置剩下未讀通知個數,桌面刷新角標。
let setBadgeNumberCallback = (err: BusinessError): void => {if (err) {hilog.error(DOMAIN_NUMBER, TAG, `Failed to set badge number. Code is ${err.code}, message is ${err.message}`);return;}hilog.info(DOMAIN_NUMBER, TAG, `Succeeded in setting badge number.`);
}let badgeNumber = 8;
notificationManager.setBadgeNumber(badgeNumber, setBadgeNumberCallback);
三、常見問題
由于setBadgeNumber為異步接口,使用setBadgeNumber連續設置角標時,為了確保執行順序符合預期,需要確保上一次設置完成后才能進行下一次設置。
- ?反例
?????????????? 每次接口調用是相互獨立的、沒有依賴關系的,實際執行時無法保證調用順序。
?????????????? 示例如下:
let badgeNumber: number = 10;
notificationManager.setBadgeNumber(badgeNumber).then(() => {hilog.info(DOMAIN_NUMBER, TAG, `setBadgeNumber 10 success.`);
});
badgeNumber = 11;
notificationManager.setBadgeNumber(badgeNumber).then(() => {hilog.info(DOMAIN_NUMBER, TAG, `setBadgeNumber 11 success.`);
});
- 正例
??????????????? 多次接口調用存在依賴關系,確保上一次設置完成后才能進行下一次設置。
????????????????示例如下:
let badgeNumber: number = 10;
notificationManager.setBadgeNumber(badgeNumber).then(() => {hilog.info(DOMAIN_NUMBER, TAG, `setBadgeNumber 10 success.`);badgeNumber = 11;notificationManager.setBadgeNumber(badgeNumber).then(() => {hilog.info(DOMAIN_NUMBER, TAG, `setBadgeNumber 11 success.`);});
});
參考:文檔中心