1# NotificationSubscriber (System API)
2
3The **NotificationSubscriber** module provides callbacks for receiving or removing notifications and serves as the input parameter of [subscribe](./js-apis-notificationSubscribe-sys.md).
4
5> **NOTE**
6>
7> The initial APIs of this module are supported since API version 7. Newly added APIs will be marked with a superscript to indicate their earliest API version.
8>
9> The APIs provided by this module are system APIs.
10
11## Modules to Import
12
13```js
14import { notificationSubscribe } from '@kit.NotificationKit';
15```
16
17## onConsume
18
19onConsume?: (data: [SubscribeCallbackData](#subscribecallbackdata)) => void
20
21Called when a new notification is received.
22
23**System capability**: SystemCapability.Notification.Notification
24
25**System API**: This is a system API.
26
27**Parameters**
28
29| Name | Type | Mandatory | Description |
30| ------------ | ------------------------ | ---- | -------------------------- |
31| onConsume | (data: [SubscribeCallbackData](#subscribecallbackdata)) => void | Yes | Information about the notification received. |
32
33**Example**
34
35```ts
36import { BusinessError } from '@kit.BasicServicesKit';
37
38let subscribeCallback = (err: BusinessError) => {
39  if (err) {
40    console.error(`subscribe failed, code is ${err.code}, message is ${err.message}`);
41  } else {
42    console.info("subscribeCallback");
43  }
44};
45
46let onConsumeCallback = (data: notificationSubscribe.SubscribeCallbackData) => {
47  console.info('===> onConsume in test');
48  let req = data.request;
49  console.info('===> onConsume callback req.id:' + req.id);
50};
51
52let subscriber: notificationSubscribe.NotificationSubscriber = {
53  onConsume: onConsumeCallback
54};
55
56notificationSubscribe.subscribe(subscriber, subscribeCallback);
57```
58
59## onCancel
60
61onCancel?:(data: [SubscribeCallbackData](#subscribecallbackdata)) => void
62
63Called when a notification is canceled.
64
65**System capability**: SystemCapability.Notification.Notification
66
67**System API**: This is a system API.
68
69**Parameters**
70
71| Name | Type | Mandatory | Description |
72| ------------ | ------------------------ | ---- | -------------------------- |
73| onCancel | (data: [SubscribeCallbackData](#subscribecallbackdata)) => void | Yes | Information about the notification to cancel. |
74
75**Example**
76
77```ts
78import { BusinessError } from '@kit.BasicServicesKit';
79
80let subscribeCallback = (err: BusinessError) => {
81  if (err) {
82    console.error(`subscribe failed, code is ${err.code}, message is ${err.message}`);
83  } else {
84    console.info("subscribeCallback");
85  }
86};
87
88let onCancelCallback = (data: notificationSubscribe.SubscribeCallbackData) => {
89  console.info('===> onCancel in test');
90  let req = data.request;
91  console.info('===> onCancel callback req.id:' + req.id);
92}
93
94let subscriber: notificationSubscribe.NotificationSubscriber = {
95  onCancel: onCancelCallback
96};
97
98notificationSubscribe.subscribe(subscriber, subscribeCallback);
99```
100
101## onUpdate
102
103onUpdate?:(data: [NotificationSortingMap](js-apis-inner-notification-notificationSortingMap-sys.md)) => void
104
105Called when notification sorting is updated.
106
107**System capability**: SystemCapability.Notification.Notification
108
109**System API**: This is a system API.
110
111**Parameters**
112
113| Name | Type | Mandatory | Description |
114| ------------ | ------------------------ | ---- | -------------------------- |
115| onUpdate | (data: [NotificationSortingMap](js-apis-inner-notification-notificationSortingMap-sys.md)) => void | Yes | Latest notification sorting list. |
116
117**Example**
118
119```ts
120import { BusinessError } from '@kit.BasicServicesKit';
121
122let subscribeCallback = (err: BusinessError) => {
123  if (err) {
124    console.error(`subscribe failed, code is ${err.code}, message is ${err.message}`);
125  } else {
126    console.info("subscribeCallback");
127  }
128};
129
130let subscriber: notificationSubscribe.NotificationSubscriber = {
131  onUpdate: (map) => {
132    console.info('===> onUpdateCallback map:' + JSON.stringify(map));
133  }
134};
135
136notificationSubscribe.subscribe(subscriber, subscribeCallback);
137```
138
139## onConnect
140
141onConnect?:() => void
142
143Called when the subscription is complete.
144
145**System capability**: SystemCapability.Notification.Notification
146
147**System API**: This is a system API.
148
149**Parameters**
150
151| Name | Type | Mandatory | Description |
152| ------------ | ------------------------ | ---- | -------------------------- |
153| onConnect | () => void | Yes | Callback invoked when the subscription is complete. |
154
155**Example**
156
157```ts
158import { BusinessError } from '@kit.BasicServicesKit';
159
160let subscribeCallback = (err: BusinessError) => {
161  if (err) {
162    console.error(`subscribe failed, code is ${err.code}, message is ${err.message}`);
163  } else {
164    console.info("subscribeCallback");
165  }
166};
167
168let onConnectCallback = () => {
169  console.info('===> onConnect in test');
170}
171
172let subscriber: notificationSubscribe.NotificationSubscriber = {
173  onConnect: onConnectCallback
174};
175
176notificationSubscribe.subscribe(subscriber, subscribeCallback);
177```
178
179## onDisconnect
180
181onDisconnect?:() => void
182
183Called when unsubscription is complete.
184
185**System capability**: SystemCapability.Notification.Notification
186
187**System API**: This is a system API.
188
189**Parameters**
190
191| Name | Type | Mandatory | Description |
192| ------------ | ------------------------ | ---- | -------------------------- |
193| onDisconnect | () => void | Yes | Callback invoked when unsubscription is complete. |
194
195**Example**
196
197```ts
198import { BusinessError } from '@kit.BasicServicesKit';
199
200let subscribeCallback = (err: BusinessError) => {
201  if (err) {
202    console.error(`subscribe failed, code is ${err.code}, message is ${err.message}`);
203  } else {
204    console.info("subscribeCallback");
205  }
206};
207let unsubscribeCallback = (err: BusinessError) => {
208  if (err) {
209    console.error(`unsubscribe failed, code is ${err.code}, message is ${err.message}`);
210  } else {
211    console.info("unsubscribeCallback");
212  }
213};
214
215let onConnectCallback = () => {
216  console.info('===> onConnect in test');
217}
218let onDisconnectCallback = () => {
219  console.info('===> onDisconnect in test');
220}
221
222let subscriber: notificationSubscribe.NotificationSubscriber = {
223  onConnect: onConnectCallback,
224  onDisconnect: onDisconnectCallback
225};
226
227// The onConnect callback is invoked when subscription to the notification is complete.
228notificationSubscribe.subscribe(subscriber, subscribeCallback);
229// The onDisconnect callback is invoked when unsubscription to the notification is complete.
230notificationSubscribe.unsubscribe(subscriber, unsubscribeCallback);
231```
232
233## onDestroy
234
235onDestroy?:() => void
236
237Called when the service is disconnected.
238
239**System capability**: SystemCapability.Notification.Notification
240
241**System API**: This is a system API.
242
243**Parameters**
244
245| Name | Type | Mandatory | Description |
246| ------------ | ------------------------ | ---- | -------------------------- |
247| onDestroy | () => void | Yes | Callback used when the service is disconnected. |
248
249**Example**
250
251```ts
252import { BusinessError } from '@kit.BasicServicesKit';
253
254let subscribeCallback = (err: BusinessError) => {
255  if (err) {
256    console.error(`subscribe failed, code is ${err.code}, message is ${err.message}`);
257  } else {
258    console.info("subscribeCallback");
259  }
260};
261
262let onDestroyCallback = () => {
263  console.info('===> onDestroy in test');
264}
265
266let subscriber: notificationSubscribe.NotificationSubscriber = {
267  onDestroy: onDestroyCallback
268};
269
270notificationSubscribe.subscribe(subscriber, subscribeCallback);
271```
272
273## onDoNotDisturbDateChange<sup>8+</sup>(deprecated)
274
275onDoNotDisturbDateChange?:(mode: notification.[DoNotDisturbDate](js-apis-notification-sys.md#donotdisturbdate)) => void
276
277Called when the DND time settings are changed.
278
279> **NOTE**
280>
281> This API is supported since API version 8 and is deprecated since API version 11. You are advised to use [onDoNotDisturbChanged](js-apis-inner-notification-notificationSubscriber-sys.md#ondonotdisturbchanged11) instead.
282
283**System capability**: SystemCapability.Notification.Notification
284
285**System API**: This is a system API.
286
287**Parameters**
288
289| Name | Type | Mandatory | Description |
290| ------------ | ------------------------ | ---- | -------------------------- |
291| onDoNotDisturbDateChange | (mode: notification.[DoNotDisturbDate](js-apis-notification-sys.md#donotdisturbdate)) => void | Yes | Callback used to return DND time setting updates. |
292
293**Example**
294
295```ts
296import { BusinessError } from '@kit.BasicServicesKit';
297
298let subscribeCallback = (err: BusinessError) => {
299  if (err) {
300    console.error(`subscribe failed, code is ${err.code}, message is ${err.message}`);
301  } else {
302    console.info("subscribeCallback");
303  }
304};
305
306let onDoNotDisturbDateChangeCallback = (mode: Notification.DoNotDisturbDate) => {
307  console.info('===> onDoNotDisturbDateChange:' + mode);
308}
309
310let subscriber: notificationSubscribe.NotificationSubscriber = {
311  onDoNotDisturbDateChange: onDoNotDisturbDateChangeCallback
312};
313
314notificationSubscribe.subscribe(subscriber, subscribeCallback);
315```
316
317## onDoNotDisturbChanged<sup>11+</sup>
318
319onDoNotDisturbChanged?:(mode: notificationManager.[DoNotDisturbDate](js-apis-notificationManager-sys.md#donotdisturbdate)) => void
320
321Called when the DND time settings are changed.
322
323**System API**: This is a system API.
324
325**System capability**: SystemCapability.Notification.Notification
326
327**Parameters**
328
329| Name | Type | Mandatory | Description |
330| ------------ | ------------------------ | ---- | -------------------------- |
331| onDoNotDisturbChanged | (mode: notificationManager.[DoNotDisturbDate](js-apis-notificationManager-sys.md#donotdisturbdate)) => void | Yes | Callback used to return DND time setting updates. |
332
333**Example**
334
335```ts
336import { BusinessError } from '@kit.BasicServicesKit';
337import { notificationSubscribe, notificationManager } from '@kit.NotificationKit';
338
339let subscribeCallback = (err: BusinessError) => {
340  if (err) {
341    console.error(`subscribe failed, code is ${err.code}, message is ${err.message}`);
342  } else {
343    console.info("subscribeCallback");
344  }
345};
346
347let onDoNotDisturbChangedCallback = (mode: notificationManager.DoNotDisturbDate) => {
348  console.info('===> onDoNotDisturbChanged:' + mode);
349}
350
351let subscriber: notificationSubscribe.NotificationSubscriber = {
352  onDoNotDisturbChanged: onDoNotDisturbChangedCallback
353};
354
355notificationSubscribe.subscribe(subscriber, subscribeCallback);
356```
357
358## onEnabledNotificationChanged<sup>8+</sup>
359
360onEnabledNotificationChanged?:(callbackData: [EnabledNotificationCallbackData](#enablednotificationcallbackdata8)) => void
361
362Listens for the notification enabled status changes.
363
364**System capability**: SystemCapability.Notification.Notification
365
366**System API**: This is a system API.
367
368**Parameters**
369
370| Name | Type                                                                                                          | Mandatory | Description |
371| ------------ |--------------------------------------------------------------------------------------------------------------| ---- | -------------------------- |
372| onEnabledNotificationChanged | (callbackData: [EnabledNotificationCallbackData](#enablednotificationcallbackdata8)) => void | Yes | Callback used to return the listened application information. |
373
374**Example**
375
376```ts
377import { BusinessError } from '@kit.BasicServicesKit';
378
379let subscribeCallback = (err: BusinessError) => {
380  if (err) {
381    console.error(`subscribe failed, code is ${err.code}, message is ${err.message}`);
382  } else {
383    console.info("subscribeCallback");
384  }
385};
386
387let onEnabledNotificationChangedCallback = (callbackData: notificationSubscribe.EnabledNotificationCallbackData) => {
388  console.info("bundle: ", callbackData.bundle);
389  console.info("uid: ", callbackData.uid);
390  console.info("enable: ", callbackData.enable);
391};
392
393let subscriber: notificationSubscribe.NotificationSubscriber = {
394  onEnabledNotificationChanged: onEnabledNotificationChangedCallback
395};
396
397notificationSubscribe.subscribe(subscriber, subscribeCallback);
398```
399
400## onBadgeChanged<sup>10+</sup>
401
402 onBadgeChanged?:(data: [BadgeNumberCallbackData](#badgenumbercallbackdata10)) => void
403
404Listens for the change of the notification badge number.
405
406**System capability**: SystemCapability.Notification.Notification
407
408**System API**: This is a system API.
409
410**Parameters**
411
412| Name  | Type                                                        | Mandatory | Description                      |
413| -------- | ------------------------------------------------------------ | ---- | -------------------------- |
414| onBadgeChanged | (data: [BadgeNumberCallbackData](#badgenumbercallbackdata10)) => void | Yes  | Callback used to return the listened application information. |
415
416**Example**
417
418```ts
419import { BusinessError } from '@kit.BasicServicesKit';
420
421let subscribeCallback = (err: BusinessError) => {
422  if (err) {
423    console.error(`subscribe failed, code is ${err.code}, message is ${err.message}`);
424  } else {
425    console.info("subscribeCallback");
426  }
427};
428
429let subscriber: notificationSubscribe.NotificationSubscriber = {
430  onBadgeChanged: (data) => {
431    console.info("bundle: ", data.bundle);
432    console.info("uid: ", data.uid);
433    console.info("badgeNumber: ", data.badgeNumber);
434  }
435};
436
437notificationSubscribe.subscribe(subscriber, subscribeCallback);
438```
439
440## onBadgeEnabledChanged<sup>12+</sup>
441
442onBadgeEnabledChanged?: [BadgeEnabledChangedCallback](#badgeenabledchangedcallback12)
443
444Listens for the change of the notification badge enabling status.
445
446**System capability**: SystemCapability.Notification.Notification
447
448**System API**: This is a system API.
449
450**Parameters**
451
452| Name  | Type                                                        | Mandatory | Description                      |
453| -------- | ------------------------------------------------------------ | ---- | -------------------------- |
454| onBadgeEnabledChanged | [BadgeEnabledChangedCallback](#badgeenabledchangedcallback12) | Yes  | Callback used to return the change of the notification badge enabling status. |
455
456**Example**
457
458```ts
459import { BusinessError } from '@kit.BasicServicesKit';
460
461let subscribeCallback = (err: BusinessError) => {
462  if (err) {
463    console.error(`subscribe failed, code is ${err.code}, message is ${err.message}`);
464  } else {
465    console.info('subscribeCallback');
466  }
467};
468
469let BadgeEnabledChangedCallback = (data: notificationSubscribe.EnabledNotificationCallbackData) => {
470  console.info('onBadgeEnabledChanged, badge enabled state change to: ', JSON.stringify(data));
471};
472let subscriber: notificationSubscribe.NotificationSubscriber = {
473  onBadgeEnabledChanged: BadgeEnabledChangedCallback
474};
475
476notificationSubscribe.subscribe(subscriber, subscribeCallback);
477```
478
479
480## onBatchCancel<sup>11+</sup>
481
482 onBatchCancel?:(data: Array<[SubscribeCallbackData](#subscribecallbackdata)>) => void
483
484Called for batch deletion.
485
486**System capability**: SystemCapability.Notification.Notification
487
488**System API**: This is a system API.
489
490**Parameters**
491
492| Name  | Type                                                        | Mandatory | Description                      |
493| -------- | ------------------------------------------------------------ | ---- | -------------------------- |
494| onBatchCancel | (data: Array<[SubscribeCallbackData](#subscribecallbackdata)>) => void | Yes  | Notification information of batch deletion. |
495
496**Example**
497
498```ts
499import { BusinessError } from '@kit.BasicServicesKit';
500
501let subscribeCallback = (err: BusinessError) => {
502  if (err) {
503    console.error(`subscribe failed, code is ${err.code}, message is ${err.message}`);
504  } else {
505    console.info("subscribeCallback");
506  }
507};
508
509let onBatchCancelCallBack = (data: Array<notificationSubscribe.SubscribeCallbackData>) => {
510  console.info('===> onBatchCancel in test');
511  let req = data[0].request;
512  console.info('===> onBatchCancel callback req.id:' + req.id);
513};
514
515let subscriber: notificationSubscribe.NotificationSubscriber = {
516  onBatchCancel: onBatchCancelCallBack
517};
518
519notificationSubscribe.subscribe(subscriber, subscribeCallback);
520```
521## SubscribeCallbackData
522
523**System capability**: SystemCapability.Notification.Notification
524
525**System API**: This is a system API.
526
527| Name           | Type                                                                | Readable | Writable | Description    |
528| --------------- |--------------------------------------------------------------------| ---- | --- | -------- |
529| request         | [NotificationRequest](js-apis-notification.md#notificationrequest) | Yes | No | Notification content. |
530| sortingMap      | [NotificationSortingMap](js-apis-inner-notification-notificationSortingMap-sys.md) | Yes | No | Notification sorting information. |
531| reason          | number                                                             | Yes | No | Reason for deletion. The options are as follows:<br>**1**: The notification is deleted after being clicked.<br>**2**: The notification is deleted by the user.|
532| sound           | string                                                             | Yes | No | Sound used for notification. |
533| vibrationValues | Array\<number\>                                                    | Yes | No | Vibration used for notification. |
534
535
536## EnabledNotificationCallbackData<sup>8+</sup>
537
538**System capability**: SystemCapability.Notification.Notification
539
540**System API**: This is a system API.
541
542| Name  | Type   | Readable | Writable | Description            |
543| ------ | ------- | ---- | --- | ---------------- |
544| bundle | string  | Yes | No | Bundle name of the application.      |
545| uid    | number  | Yes | No | UID of the application.       |
546| enable | boolean | Yes | No | Notification enabled status of the application. |
547
548
549## BadgeNumberCallbackData<sup>10+</sup>
550
551**System capability**: SystemCapability.Notification.Notification
552
553**System API**: This is a system API.
554
555| Name       | Type  | Readable | Writable | Description        |
556| ----------- | ------ | ---- | ---- | ------------ |
557| bundle      | string | Yes  | No  | Bundle name of the application. |
558| uid         | number | Yes  | No  | UID of the application. |
559| badgeNumber | number | Yes  | No  | Number of notifications displayed on the application icon.  |
560| instanceKey  | number | Yes  | No  | Key value of an application instance.  |
561
562
563## BadgeEnabledChangedCallback<sup>12+</sup>
564
565**System capability**: SystemCapability.Notification.Notification
566
567**System API**: This is a system API.
568
569| Name       | Type  | Read Only | Mandatory | Description    |
570| ----------- | ------ | ---- | ---- |------------ |
571| data        | [EnabledNotificationCallbackData](#enablednotificationcallbackdata8)) => void | Yes  | Yes   |   Callback used to return the listened badge enabling status. |
572