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