# NotificationSubscriber(系统接口)
作为订阅通知接口[subscribe](./js-apis-notificationSubscribe-sys.md)的入参,提供订阅者接收到新通知、取消通知等的回调方法。
> **说明:**
>
> 本模块首批接口从API version 7开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
>
> 本模块为系统接口。
## 导入模块
```js
import { notificationSubscribe } from '@kit.NotificationKit';
```
## onConsume
onConsume?: (data: SubscribeCallbackData) => void
接收到新通知的回调函数。
**系统能力**:SystemCapability.Notification.Notification
**系统接口**: 此接口为系统接口。
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| ------------ | ------------------------ | ---- | -------------------------- |
| onConsume | (data: [SubscribeCallbackData](#subscribecallbackdata)) => void | 否 | 新接收到的通知信息。 |
**示例:**
```ts
import { BusinessError } from '@kit.BasicServicesKit';
let subscribeCallback = (err: BusinessError) => {
if (err) {
console.error(`subscribe failed, code is ${err.code}, message is ${err.message}`);
} else {
console.info("subscribeCallback");
}
};
let onConsumeCallback = (data: notificationSubscribe.SubscribeCallbackData) => {
console.info('===> onConsume in test');
let req = data.request;
console.info('===> onConsume callback req.id:' + req.id);
};
let subscriber: notificationSubscribe.NotificationSubscriber = {
onConsume: onConsumeCallback
};
notificationSubscribe.subscribe(subscriber, subscribeCallback);
```
## onCancel
onCancel?: (data: SubscribeCallbackData) => void
取消通知的回调函数。
**系统能力**:SystemCapability.Notification.Notification
**系统接口**: 此接口为系统接口。
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| ------------ | ------------------------ | ---- | -------------------------- |
| onCancel | (data: [SubscribeCallbackData](#subscribecallbackdata)) => void | 否 | 需要取消的通知信息。 |
**示例:**
```ts
import { BusinessError } from '@kit.BasicServicesKit';
let subscribeCallback = (err: BusinessError) => {
if (err) {
console.error(`subscribe failed, code is ${err.code}, message is ${err.message}`);
} else {
console.info("subscribeCallback");
}
};
let onCancelCallback = (data: notificationSubscribe.SubscribeCallbackData) => {
console.info('===> onCancel in test');
let req = data.request;
console.info('===> onCancel callback req.id:' + req.id);
}
let subscriber: notificationSubscribe.NotificationSubscriber = {
onCancel: onCancelCallback
};
notificationSubscribe.subscribe(subscriber, subscribeCallback);
```
## onUpdate
onUpdate?: (data: NotificationSortingMap) => void
更新通知排序的回调函数。
**系统能力**:SystemCapability.Notification.Notification
**系统接口**: 此接口为系统接口。
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| ------------ | ------------------------ | ---- | -------------------------- |
| onUpdate | (data: [NotificationSortingMap](js-apis-inner-notification-notificationSortingMap-sys.md)) => void | 否 | 最新的通知排序列表。 |
**示例:**
```ts
import { BusinessError } from '@kit.BasicServicesKit';
let subscribeCallback = (err: BusinessError) => {
if (err) {
console.error(`subscribe failed, code is ${err.code}, message is ${err.message}`);
} else {
console.info("subscribeCallback");
}
};
let subscriber: notificationSubscribe.NotificationSubscriber = {
onUpdate: (map) => {
console.info('===> onUpdateCallback map:' + JSON.stringify(map));
}
};
notificationSubscribe.subscribe(subscriber, subscribeCallback);
```
## onConnect
onConnect?: () => void
订阅完成的回调函数。
**系统能力**:SystemCapability.Notification.Notification
**系统接口**: 此接口为系统接口。
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| ------------ | ------------------------ | ---- | -------------------------- |
| onConnect | () => void | 否 | 订阅完成的回调。 |
**示例:**
```ts
import { BusinessError } from '@kit.BasicServicesKit';
let subscribeCallback = (err: BusinessError) => {
if (err) {
console.error(`subscribe failed, code is ${err.code}, message is ${err.message}`);
} else {
console.info("subscribeCallback");
}
};
let onConnectCallback = () => {
console.info('===> onConnect in test');
}
let subscriber: notificationSubscribe.NotificationSubscriber = {
onConnect: onConnectCallback
};
notificationSubscribe.subscribe(subscriber, subscribeCallback);
```
## onDisconnect
onDisconnect?: () => void
取消订阅的回调函数。
**系统能力**:SystemCapability.Notification.Notification
**系统接口**: 此接口为系统接口。
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| ------------ | ------------------------ | ---- | -------------------------- |
| onDisconnect | () => void | 否 | 取消订阅的回调。 |
**示例:**
```ts
import { BusinessError } from '@kit.BasicServicesKit';
let subscribeCallback = (err: BusinessError) => {
if (err) {
console.error(`subscribe failed, code is ${err.code}, message is ${err.message}`);
} else {
console.info("subscribeCallback");
}
};
let unsubscribeCallback = (err: BusinessError) => {
if (err) {
console.error(`unsubscribe failed, code is ${err.code}, message is ${err.message}`);
} else {
console.info("unsubscribeCallback");
}
};
let onConnectCallback = () => {
console.info('===> onConnect in test');
}
let onDisconnectCallback = () => {
console.info('===> onDisconnect in test');
}
let subscriber: notificationSubscribe.NotificationSubscriber = {
onConnect: onConnectCallback,
onDisconnect: onDisconnectCallback
};
// 订阅通知后会收到onConnect回调
notificationSubscribe.subscribe(subscriber, subscribeCallback);
// 取消订阅后会收到onDisconnect回调
notificationSubscribe.unsubscribe(subscriber, unsubscribeCallback);
```
## onDestroy
onDestroy?: () => void
服务失联回调函数。
**系统能力**:SystemCapability.Notification.Notification
**系统接口**: 此接口为系统接口。
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| ------------ | ------------------------ | ---- | -------------------------- |
| onDestroy | () => void | 否 | 服务失联的回调。 |
**示例:**
```ts
import { BusinessError } from '@kit.BasicServicesKit';
let subscribeCallback = (err: BusinessError) => {
if (err) {
console.error(`subscribe failed, code is ${err.code}, message is ${err.message}`);
} else {
console.info("subscribeCallback");
}
};
let onDestroyCallback = () => {
console.info('===> onDestroy in test');
}
let subscriber: notificationSubscribe.NotificationSubscriber = {
onDestroy: onDestroyCallback
};
notificationSubscribe.subscribe(subscriber, subscribeCallback);
```
## onDoNotDisturbDateChange8+(deprecated)
onDoNotDisturbDateChange?: (mode: notification.DoNotDisturbDate) => void
免打扰时间选项发生变更时的回调函数。
> **说明:**
>
> 此接口从API version 8开始支持,从API version 11开始不再维护,建议使用[onDoNotDisturbChanged](js-apis-inner-notification-notificationSubscriber-sys.md#ondonotdisturbchanged11)代替。
**系统能力**:SystemCapability.Notification.Notification
**系统接口**: 此接口为系统接口。
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| ------------ | ------------------------ | ---- | -------------------------- |
| onDoNotDisturbDateChange | (mode: notification.[DoNotDisturbDate](js-apis-notification-sys.md#donotdisturbdate8-deprecated)) => void | 否 | 回调返回免打扰时间选项变更。 |
**示例:**
```ts
import { BusinessError } from '@kit.BasicServicesKit';
import Notification from '@ohos.notification';
let subscribeCallback = (err: BusinessError) => {
if (err) {
console.error(`subscribe failed, code is ${err.code}, message is ${err.message}`);
} else {
console.info("subscribeCallback");
}
};
let onDoNotDisturbDateChangeCallback = (mode: Notification.DoNotDisturbDate) => {
console.info('===> onDoNotDisturbDateChange:' + mode);
}
let subscriber: notificationSubscribe.NotificationSubscriber = {
onDoNotDisturbDateChange: onDoNotDisturbDateChangeCallback
};
notificationSubscribe.subscribe(subscriber, subscribeCallback);
```
## onDoNotDisturbChanged11+
onDoNotDisturbChanged?: (mode: notificationManager.DoNotDisturbDate) => void
免打扰时间选项发生变更时的回调函数。
**系统接口**: 此接口为系统接口。
**系统能力**:SystemCapability.Notification.Notification
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| ------------ | ------------------------ | ---- | -------------------------- |
| onDoNotDisturbChanged | (mode: notificationManager.[DoNotDisturbDate](js-apis-notificationManager-sys.md#donotdisturbdate)) => void | 否 | 回调返回免打扰时间选项变更。 |
**示例:**
```ts
import { BusinessError } from '@kit.BasicServicesKit';
import { notificationSubscribe, notificationManager } from '@kit.NotificationKit';
let subscribeCallback = (err: BusinessError) => {
if (err) {
console.error(`subscribe failed, code is ${err.code}, message is ${err.message}`);
} else {
console.info("subscribeCallback");
}
};
let onDoNotDisturbChangedCallback = (mode: notificationManager.DoNotDisturbDate) => {
console.info('===> onDoNotDisturbChanged:' + JSON.stringify(mode));
}
let subscriber: notificationSubscribe.NotificationSubscriber = {
onDoNotDisturbChanged: onDoNotDisturbChangedCallback
};
notificationSubscribe.subscribe(subscriber, subscribeCallback);
```
## onEnabledNotificationChanged8+
onEnabledNotificationChanged?: (callbackData: EnabledNotificationCallbackData) => void
监听应用通知使能变化。
**系统能力**:SystemCapability.Notification.Notification
**系统接口**: 此接口为系统接口。
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| ------------ |--------------------------------------------------------------------------------------------------------------| ---- | -------------------------- |
| onEnabledNotificationChanged | (callbackData: [EnabledNotificationCallbackData](#enablednotificationcallbackdata8)) => void | 否 | 回调返回监听到的应用信息。 |
**示例:**
```ts
import { BusinessError } from '@kit.BasicServicesKit';
let subscribeCallback = (err: BusinessError) => {
if (err) {
console.error(`subscribe failed, code is ${err.code}, message is ${err.message}`);
} else {
console.info("subscribeCallback");
}
};
let onEnabledNotificationChangedCallback = (callbackData: notificationSubscribe.EnabledNotificationCallbackData) => {
console.info("bundle: ", callbackData.bundle);
console.info("uid: ", callbackData.uid);
console.info("enable: ", callbackData.enable);
};
let subscriber: notificationSubscribe.NotificationSubscriber = {
onEnabledNotificationChanged: onEnabledNotificationChangedCallback
};
notificationSubscribe.subscribe(subscriber, subscribeCallback);
```
## onBadgeChanged10+
onBadgeChanged?: (data: BadgeNumberCallbackData) => void
监听应用角标个数变化。
**系统能力**:SystemCapability.Notification.Notification
**系统接口**: 此接口为系统接口。
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | ------------------------------------------------------------ | ---- | -------------------------- |
| onBadgeChanged | (data: [BadgeNumberCallbackData](#badgenumbercallbackdata10)) => void | 否 | 回调返回监听到的应用信息。 |
**示例:**
```ts
import { BusinessError } from '@kit.BasicServicesKit';
let subscribeCallback = (err: BusinessError) => {
if (err) {
console.error(`subscribe failed, code is ${err.code}, message is ${err.message}`);
} else {
console.info("subscribeCallback");
}
};
let subscriber: notificationSubscribe.NotificationSubscriber = {
onBadgeChanged: (data) => {
console.info("bundle: ", data.bundle);
console.info("uid: ", data.uid);
console.info("badgeNumber: ", data.badgeNumber);
}
};
notificationSubscribe.subscribe(subscriber, subscribeCallback);
```
## onBadgeEnabledChanged12+
onBadgeEnabledChanged?: BadgeEnabledChangedCallback
监听应用角标使能状态变化。
**系统能力**:SystemCapability.Notification.Notification
**系统接口**: 此接口为系统接口。
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | ------------------------------------------------------------ | ---- | -------------------------- |
| onBadgeEnabledChanged | [BadgeEnabledChangedCallback](#badgeenabledchangedcallback12) | 否 | 回调应用角标使能状态变化。 |
**示例:**
```ts
import { BusinessError } from '@kit.BasicServicesKit';
let subscribeCallback = (err: BusinessError) => {
if (err) {
console.error(`subscribe failed, code is ${err.code}, message is ${err.message}`);
} else {
console.info('subscribeCallback');
}
};
let BadgeEnabledChangedCallback = (data: notificationSubscribe.EnabledNotificationCallbackData) => {
console.info('onBadgeEnabledChanged, badge enabled state change to: ', JSON.stringify(data));
};
let subscriber: notificationSubscribe.NotificationSubscriber = {
onBadgeEnabledChanged: BadgeEnabledChangedCallback
};
notificationSubscribe.subscribe(subscriber, subscribeCallback);
```
## onBatchCancel11+
onBatchCancel?: (data: Array) => void
批量删除的回调函数。
**系统能力**:SystemCapability.Notification.Notification
**系统接口**: 此接口为系统接口。
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | ------------------------------------------------------------ | ---- | -------------------------- |
| onBatchCancel | (data: Array<[SubscribeCallbackData](#subscribecallbackdata)>) => void | 否 | 批量删除的通知信息。 |
**示例:**
```ts
import { BusinessError } from '@kit.BasicServicesKit';
let subscribeCallback = (err: BusinessError) => {
if (err) {
console.error(`subscribe failed, code is ${err.code}, message is ${err.message}`);
} else {
console.info("subscribeCallback");
}
};
let onBatchCancelCallBack = (data: Array) => {
console.info('===> onBatchCancel in test');
let req = data[0].request;
console.info('===> onBatchCancel callback req.id:' + req.id);
};
let subscriber: notificationSubscribe.NotificationSubscriber = {
onBatchCancel: onBatchCancelCallBack
};
notificationSubscribe.subscribe(subscriber, subscribeCallback);
```
## SubscribeCallbackData
**系统能力**:以下各项对应的系统能力均为SystemCapability.Notification.Notification
**系统接口**:此接口为系统接口。
| 名称 | 类型 | 可读 | 可写 | 说明 |
| --------------- |--------------------------------------------------------------------| ---- | --- | -------- |
| request | [NotificationRequest](js-apis-inner-notification-notificationRequest-sys.md#notificationrequest) | 是 | 否 | 通知内容。 |
| sortingMap | [NotificationSortingMap](js-apis-inner-notification-notificationSortingMap-sys.md) | 是 | 否 | 通知排序信息。 |
| reason | number | 是 | 否 | 删除原因(1:点击通知后删除通知,2:用户删除通知) 。|
| sound | string | 是 | 否 | 通知声音。 |
| vibrationValues | Array\ | 是 | 否 | 通知震动。 |
## EnabledNotificationCallbackData8+
**系统能力**:以下各项对应的系统能力均为SystemCapability.Notification.Notification
**系统接口**:此接口为系统接口。
| 名称 | 类型 | 可读 | 可写 | 说明 |
| ------ | ------- | ---- | --- | ---------------- |
| bundle | string | 是 | 否 | 应用的包名。 |
| uid | number | 是 | 否 | 应用的uid。 |
| enable | boolean | 是 | 否 | 应用通知使能状态。 |
## BadgeNumberCallbackData10+
**系统能力**:以下各项对应的系统能力均为SystemCapability.Notification.Notification
**系统接口**:此接口为系统接口。
| 名称 | 类型 | 可读 | 可写 | 说明 |
| ----------- | ------ | ---- | ---- | ------------ |
| bundle | string | 是 | 否 | 应用的包名。 |
| uid | number | 是 | 否 | 应用的uid。 |
| badgeNumber | number | 是 | 否 | 角标个数。 |
| instanceKey | number | 是 | 否 | 应用实例键值。 |
## BadgeEnabledChangedCallback12+
**系统能力**:以下各项对应的系统能力均为SystemCapability.Notification.Notification
**系统接口**:此接口为系统接口。
| 名称 | 类型 | 只读 | 可选 | 说明 |
| ----------- | ------ | ---- | ---- |------------ |
| data | [EnabledNotificationCallbackData](#enablednotificationcallbackdata8) | 是 | 是 | 回调返回监听到的角标使能状态信息。 |