• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# 管理通知渠道
2系统支持多种通知渠道,不同通知渠道对应的通知提醒方式不同,可以根据应用的实际场景选择适合的通知渠道,并对通知渠道进行管理(支持创建、查询、删除等操作)。
3
4## 通知渠道类型说明
5
6不同类型的通知渠道对应的通知提醒方式不同,详见下表。其中,Y代表支持,N代表不支持。
7
8<!--RP1-->
9<!--RP1End-->
10
11| SlotType             | 取值   | 分类     | 通知中心 | 横幅 | 锁屏 | 铃声/振动 | 状态栏图标 | 自动亮屏 |
12| -------------------- | ------ | --------| ------- |------|------|----------|-----------|---------|
13| UNKNOWN_TYPE         | 0      | 未知类型 | Y | N | N | N | N | N |
14| SOCIAL_COMMUNICATION | 1      | 社交通信 | Y | Y | Y | Y | Y | Y |
15| SERVICE_INFORMATION  | 2      | 服务提醒 | Y | Y | Y | Y | Y | Y |
16| CONTENT_INFORMATION  | 3      | 内容资讯 | Y | N | N | N | N | N |
17| CUSTOMER_SERVICE     | 5      | 客服消息 | Y | N | N | Y | Y | N |
18| OTHER_TYPES          | 0xFFFF | 其他     | Y | N | N | N | N | N |
19
20
21## 接口说明
22
23通知渠道主要接口如下。其他接口介绍详情参见[API参考](../reference/apis-notification-kit/js-apis-notificationManager.md)。
24
25| **接口名** | **描述** |
26| ---------- | -------- |
27| addSlot(type: SlotType): Promise\<void\>                 | 创建指定类型的通知渠道。           |
28| getSlot(slotType: SlotType): Promise\<NotificationSlot\> | 获取一个指定类型的通知渠道。       |
29| removeSlot(slotType: SlotType): Promise\<void\>          | 删除此应用程序指定类型的通知渠道。  |
30
31除了可以使用`addSlot()`创建通知渠道,还可以在发布通知的[NotificationRequest](../reference/apis-notification-kit/js-apis-inner-notification-notificationRequest.md#notificationrequest-1)中携带notificationSlotType字段,如果对应渠道不存在,会自动创建。
32
33## 开发步骤
34
351. 导入notificationManager模块。
36
37   ```ts
38   import { notificationManager } from '@kit.NotificationKit';
39   import { BusinessError } from '@kit.BasicServicesKit';
40   import { hilog } from '@kit.PerformanceAnalysisKit';
41
42   const TAG: string = '[PublishOperation]';
43   const DOMAIN_NUMBER: number = 0xFF00;
44   ```
45
462. 创建指定类型的通知渠道。
47
48    ```ts
49    // addSlot回调
50    let addSlotCallBack = (err: BusinessError): void => {
51      if (err) {
52        hilog.error(DOMAIN_NUMBER, TAG, `addSlot failed, code is ${err.code}, message is ${err.message}`);
53      } else {
54        hilog.info(DOMAIN_NUMBER, TAG, `addSlot success`);
55      }
56    }
57    notificationManager.addSlot(notificationManager.SlotType.SOCIAL_COMMUNICATION, addSlotCallBack);
58    ```
59
603. 查询指定类型的通知渠道。
61
62    获取对应渠道是否创建以及该渠道支持的通知提醒方式,比如是否有声音提示,是否有震动,锁屏是否可见等。
63    ```ts
64    // getSlot回调
65    let getSlotCallback = (err: BusinessError, data: notificationManager.NotificationSlot): void => {
66      if (err) {
67        hilog.error(DOMAIN_NUMBER, TAG, `Failed to get slot. Code is ${err.code}, message is ${err.message}`);
68      } else {
69        hilog.info(DOMAIN_NUMBER, TAG, `Succeeded in getting slot.`);
70        if (data != null) {
71          hilog.info(DOMAIN_NUMBER, TAG, `slot enable status is ${JSON.stringify(data.enabled)}`);
72          hilog.info(DOMAIN_NUMBER, TAG, `slot level is ${JSON.stringify(data.level)}`);
73          hilog.info(DOMAIN_NUMBER, TAG, `vibrationEnabled status is ${JSON.stringify(data.vibrationEnabled)}`);
74          hilog.info(DOMAIN_NUMBER, TAG, `lightEnabled status is ${JSON.stringify(data.lightEnabled)}`);
75        }
76      }
77    }
78    let slotType: notificationManager.SlotType = notificationManager.SlotType.SOCIAL_COMMUNICATION;
79    notificationManager.getSlot(slotType, getSlotCallback);
80    ```
81
824. 删除指定类型的通知渠道。
83
84    ```ts
85    // removeSlot回调
86    let removeSlotCallback = (err: BusinessError): void => {
87      if (err) {
88        hilog.error(DOMAIN_NUMBER, TAG, `removeSlot failed, code is ${JSON.stringify(err.code)}, message is ${JSON.stringify(err.message)}`);
89      } else {
90        hilog.info(DOMAIN_NUMBER, TAG, "removeSlot success");
91      }
92    }
93    let slotType: notificationManager.SlotType = notificationManager.SlotType.SOCIAL_COMMUNICATION;
94    notificationManager.removeSlot(slotType, removeSlotCallback);
95    ```
96