1# 订阅通知(仅对系统应用开放) 2 3 4应用需要接收通知,必须先发起订阅,通知子系统提供两种接口:订阅所有应用发布的通知和订阅某些应用发布的通知。 5 6 7系统提供[NotificationSubscriber](../reference/apis/js-apis-inner-notification-notificationSubscriber.md)对象,用于提供订阅成功、通知接收、通知取消、订阅取消等回调接口,将变化信息回调给订阅者。 8 9 10## 接口说明 11 12通知订阅主要接口如下。详细接口介绍请参见[API参考](../reference/apis/js-apis-notificationSubscribe.md)。 13 14**表1** 通知订阅接口介绍 15 16| **接口名** | **描述** | 17| -------- | -------- | 18| subscribe(subscriber: NotificationSubscriber, info: NotificationSubscribeInfo, callback: AsyncCallback<void>): void | 订阅指定应用通知。 | 19| subscribe(subscriber: NotificationSubscriber, callback: AsyncCallback<void>): void | 订阅所有通知。 | 20 21**表2** 通知订阅回调接口介绍 22 23| **接口名** | **描述** | 24| -------- | -------- | 25| onConsume?:(data: SubscribeCallbackData) => void | 通知回调。 | 26| onCancel?:(data: SubscribeCallbackData) => void | 通知取消回调。 | 27| onUpdate?:(data: NotificationSortingMap) => void | 通知排序更新回调。 | 28| onConnect?:() => void; | 订阅成功回调。 | 29| onDisconnect?:() => void; | 取消订阅回调。 | 30| onDestroy?:() => void | 与通知子系统断开回调。 | 31| onDoNotDisturbDateChange?:(mode: notification.DoNotDisturbDate) => void | 免打扰时间选项变更回调。 | 32| onEnabledNotificationChanged?:(callbackData: EnabledNotificationCallbackData) => void | 通知开关变更回调。 | 33| onBadgeChanged?:(data: BadgeNumberCallbackData) => void | 应用角标个数变化回调。 | 34 35 36## 开发步骤 37 381. 申请`ohos.permission.NOTIFICATION_CONTROLLER`权限,配置方式请参见[访问控制授权申请](../security/accesstoken-guidelines.md#配置文件权限声明)。 39 402. 导入通知订阅模块。 41 42 ```ts 43 import notificationSubscribe from '@ohos.notificationSubscribe'; 44 import Base from '@ohos.base'; 45 ``` 46 473. 创建订阅者对象。 48 49 ```ts 50 let subscriber:notificationSubscribe.NotificationSubscriber = { 51 onConsume: (data:notificationSubscribe.SubscribeCallbackData) => { 52 let req = data.request; 53 console.info(`onConsume callback. req.id: ${req.id}`); 54 }, 55 onCancel: (data:notificationSubscribe.SubscribeCallbackData) => { 56 let req = data.request; 57 console.info(`onCancel callback. req.id: ${req.id}`); 58 }, 59 onUpdate: (data) => { 60 console.info(`onUpdate callback. req.id: ${data.sortedHashCode}`); 61 }, 62 onConnect: () => { 63 console.info(`onConnect callback.}`); 64 }, 65 onDisconnect: () => { 66 console.info(`onDisconnect callback.}`); 67 }, 68 onDestroy: () => { 69 console.info(`onDestroy callback.}`); 70 }, 71 }; 72 ``` 73 744. 发起通知订阅。 75 76 ```ts 77 notificationSubscribe.subscribe(subscriber, (err:Base.BusinessError) => { // callback形式调用异步接口 78 if (err) { 79 console.error(`Failed to subscribe notification. Code is ${err.code}, message is ${err.message}`); 80 return; 81 } 82 }); 83 ``` 84