1# Subscribing to Notifications (for System Applications Only) 2 3 4To receive notifications, an application must subscribe to notifications first. The notification subsystem provides two types of subscription APIs, allowing applications to subscribe to notifications from all applications or notifications from a specific application. 5 6 7You can use the [NotificationSubscriber](../reference/apis-notification-kit/js-apis-inner-notification-notificationSubscriber-sys.md) object to provide callbacks for subscription events, such as subscription success, notification reception, notification cancellation, and subscription cancellation. 8 9 10## Available APIs 11 12The major APIs for notification subscription are described as follows. For details about the APIs, see [@ohos.notificationSubscribe (NotificationSubscribe)](../reference/apis-notification-kit/js-apis-notificationSubscribe-sys.md). 13 14**Table 1** Major APIs for notification subscription 15 16| API| Description| 17| -------- | -------- | 18| subscribe(subscriber: NotificationSubscriber, info: NotificationSubscribeInfo, callback: AsyncCallback<void>): void | Subscribes to notifications from a specific application.| 19| subscribe(subscriber: NotificationSubscriber, callback: AsyncCallback<void>): void | Subscribes to notifications from all applications. | 20 21**Table 2** Callbacks for notification subscription 22 23| API| Description| 24| -------- | -------- | 25| onConsume?:(data: SubscribeCallbackData) => void | Callback for receiving notifications. | 26| onCancel?:(data: SubscribeCallbackData) => void | Callback for canceling notifications. | 27| onUpdate?:(data: NotificationSortingMap) => void | Callback for notification sorting updates. | 28| onConnect?:() => void; | Callback for subscription. | 29| onDisconnect?:() => void; | Callback for unsubscription. | 30| onDestroy?:() => void | Callback for disconnecting from the notification subsystem. | 31| onDoNotDisturbDateChange<sup>deprecated</sup>?:(mode: notification.DoNotDisturbDate<sup>deprecated</sup>) => void | Callback for the Do Not Disturb (DNT) time changes. This API is deprecated since API version 11.| 32| onDoNotDisturbChanged?:(mode: notificationManager.DoNotDisturbDate) => void | Callback for the Do Not Disturb (DNT) time changes.| 33| onEnabledNotificationChanged?:(callbackData: EnabledNotificationCallbackData) => void | Callback for notification switch changes. | 34| onBadgeChanged?:(data: BadgeNumberCallbackData) => void | Callback for notification badge number changes.| 35 36 37## How to Develop 38 391. Request the **ohos.permission.NOTIFICATION_CONTROLLER** permission. For details, see [Requesting Application Permissions](../security/AccessToken/determine-application-mode.md#requesting-permissions-for-system_basic-applications). 40 412. Import the **notificationSubscribe** module. 42 43 ```ts 44 import notificationSubscribe from '@ohos.notificationSubscribe'; 45 import Base from '@ohos.base'; 46 ``` 47 483. Create a **subscriber** object. 49 50 ```ts 51 let subscriber:notificationSubscribe.NotificationSubscriber = { 52 onConsume: (data:notificationSubscribe.SubscribeCallbackData) => { 53 let req = data.request; 54 console.info(`onConsume callback. req.id: ${req.id}`); 55 }, 56 onCancel: (data:notificationSubscribe.SubscribeCallbackData) => { 57 let req = data.request; 58 console.info(`onCancel callback. req.id: ${req.id}`); 59 }, 60 onUpdate: (data) => { 61 console.info(`onUpdate callback. req.id: ${data.sortedHashCode}`); 62 }, 63 onConnect: () => { 64 console.info(`onConnect callback.}`); 65 }, 66 onDisconnect: () => { 67 console.info(`onDisconnect callback.}`); 68 }, 69 onDestroy: () => { 70 console.info(`onDestroy callback.}`); 71 }, 72 }; 73 ``` 74 754. Initiate notification subscription. 76 77 ```ts 78 notificationSubscribe.subscribe(subscriber, (err:Base.BusinessError) => { // This API uses an asynchronous callback to return the result. 79 if (err) { 80 console.error(`Failed to subscribe notification. Code is ${err.code}, message is ${err.message}`); 81 return; 82 } 83 }); 84 ``` 85