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| **接口名** | **描述** | 26| onConsume?:(data: SubscribeCallbackData) => void | 通知回调。 | 27| onCancel?:(data: SubscribeCallbackData) => void | 通知取消回调。 | 28| onUpdate?:(data: NotificationSortingMap) => void | 通知排序更新回调。 | 29| onConnect?:() => void; | 订阅成功回调。 | 30| onDisconnect?:() => void; | 取消订阅回调。 | 31| onDestroy?:() => void | 与通知子系统断开回调。 | 32| onDoNotDisturbDateChange?:(mode: notification.DoNotDisturbDate) => void | 免打扰时间选项变更回调。 | 33| onEnabledNotificationChanged?:(callbackData: EnabledNotificationCallbackData) => 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 ``` 45 463. 创建订阅者对象。 47 48 ```ts 49 let subscriber = { 50 onConsume: function (data) { 51 let req = data.request; 52 console.info('[ANS] onConsume callback req.id: ' + req.id); 53 }, 54 onCancel: function (data) { 55 let req = data.request; 56 console.info('[ANS] onCancel callback req.id: : ' + req.id); 57 }, 58 onUpdate: function (data) { 59 console.info('[ANS] onUpdate in test'); 60 }, 61 onConnect: function () { 62 console.info('[ANS] onConnect in test'); 63 }, 64 onDisconnect: function () { 65 console.info('[ANS] onDisConnect in test'); 66 }, 67 onDestroy: function () { 68 console.info('[ANS] onDestroy in test'); 69 }, 70 }; 71 ``` 72 734. 发起通知订阅。 74 75 ```ts 76 NotificationSubscribe.subscribe(subscriber, (err, data) => { // callback形式调用异步接口 77 if (err) { 78 console.error(`[ANS] failed to subscribe, error[${err}]`); 79 return; 80 } 81 console.info(`[ANS] subscribeTest success : + ${data}`); 82 }); 83 ``` 84