1# 订阅通知(仅对系统应用开放) 2 3 4应用需要接收通知,必须先发起订阅,通知子系统提供两种接口:订阅所有应用发布的通知和订阅某些应用发布的通知。 5 6 7系统提供NotificationSubscriber对象,用于提供订阅成功、通知接收、通知取消、订阅取消等回调接口,将变化信息回调给订阅者。 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 34 35## 开发步骤 36 371. 申请`ohos.permission.NOTIFICATION_CONTROLLER`权限,配置方式请参见[访问控制授权申请](../security/accesstoken-guidelines.md#配置文件权限声明)。 38 392. 导入通知订阅模块。 40 41 ```ts 42 import notificationSubscribe from '@ohos.notificationSubscribe'; 43 ``` 44 453. 创建订阅者对象。 46 47 ```ts 48 let subscriber = { 49 onConsume: function (data) { 50 let req = data.request; 51 console.info(`onConsume callback. req.id: ${req.id}`); 52 }, 53 onCancel: function (data) { 54 let req = data.request; 55 console.info(`onCancel callback. req.id: ${req.id}`); 56 }, 57 onUpdate: function (data) { 58 let req = data.request; 59 console.info(`onUpdate callback. req.id: ${req.id}`); 60 }, 61 onConnect: function () { 62 console.info(`onConnect callback.}`); 63 }, 64 onDisconnect: function () { 65 console.info(`onDisconnect callback.}`); 66 }, 67 onDestroy: function () { 68 console.info(`onDestroy callback.}`); 69 }, 70 }; 71 ``` 72 734. 发起通知订阅。 74 75 ```ts 76 notificationSubscribe.subscribe(subscriber, (err, data) => { // callback形式调用异步接口 77 if (err) { 78 console.error(`Failed to subscribe notification. Code is ${err.code}, message is ${err.message}`); 79 return; 80 } 81 console.info(`Succeeded in subscribing to notification. Data: ${data}`); 82 }); 83 ``` 84