harmony 鸿蒙管理通知角标

  • 2023-06-24
  • 浏览 (1883)

管理通知角标

针对未读的通知,系统提供了角标设置接口,将未读通知个数显示在桌面图标的右上角角标上。

通知增加时,角标上显示的未读通知个数需要增加。

通知被查看后,角标上显示的未读通知个数需要减少,没有未读通知时,不显示角标。

接口说明

当角标设定个数取值小于或等于0时,表示清除角标。取值大于99时,通知角标将显示99+。

  • 增加角标数,支持如下两种方法:

    • 发布通知时,在NotificationRequest的badgeNumber字段里携带,桌面收到通知后,在原角标数上累加、呈现。

    • 调用接口setBadgeNumber()设置,桌面按设置的角标数呈现。

  • 减少角标数,目前仅支持通过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;
  1. 增加角标个数。

发布通知在NotificationRequest的badgeNumber字段里携带,可参考通知发布章节。

示例为调用setBadgeNumber接口增加角标,在发布完新的通知后,调用该接口。

```ts
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);
```
  1. 减少角标个数。

一条通知被查看后,应用需要调用接口设置剩下未读通知个数,桌面刷新角标。

```ts
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.`);
      });
    });
    

你可能感兴趣的鸿蒙文章

harmony 鸿蒙Notification Kit(用户通知服务)

harmony 鸿蒙发布实况窗类型通知(仅对系统应用开放)

harmony 鸿蒙取消通知

harmony 鸿蒙清除跨设备场景下的重复通知

harmony 鸿蒙通知消息跨设备协同管理(仅对系统应用开放)

harmony 鸿蒙跨设备协同通知概述

harmony 鸿蒙请求通知授权

harmony 鸿蒙Notification Kit简介

harmony 鸿蒙为跨设备协同通知添加快捷回复

harmony 鸿蒙管理通知渠道

0  赞