• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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