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