订阅通知(仅对系统应用开放)
应用需要接收通知,必须先发起订阅,通知子系统提供两种接口:订阅所有应用发布的通知和订阅某些应用发布的通知。
系统提供NotificationSubscriber对象,用于提供订阅成功、通知接收、通知取消、订阅取消等回调接口,将变化信息回调给订阅者。
接口说明
通知订阅主要接口如下。详细接口介绍请参见API参考。
表1 通知订阅接口介绍
接口名 | 描述 |
---|---|
subscribe(subscriber: NotificationSubscriber, info: NotificationSubscribeInfo, callback: AsyncCallback<void>): void | 订阅指定应用通知。 |
subscribe(subscriber: NotificationSubscriber, callback: AsyncCallback<void>): void | 订阅所有通知。 |
表2 通知订阅回调接口介绍
接口名 | 描述 |
---|---|
onConsume?:(data: SubscribeCallbackData) => void | 通知回调。 |
onCancel?:(data: SubscribeCallbackData) => void | 通知取消回调。 |
onUpdate?:(data: NotificationSortingMap) => void | 通知排序更新回调。 |
onConnect?:() => void; | 订阅成功回调。 |
onDisconnect?:() => void; | 取消订阅回调。 |
onDestroy?:() => void | 与通知子系统断开回调。 |
onDoNotDisturbDateChange?:(mode: notification.DoNotDisturbDate) => void | 免打扰时间选项变更回调。 |
onEnabledNotificationChanged?:(callbackData: EnabledNotificationCallbackData) => void | 通知开关变更回调。 |
开发步骤
-
申请
ohos.permission.NOTIFICATION_CONTROLLER
权限,配置方式请参见访问控制授权申请。 -
导入通知订阅模块。
import notificationSubscribe from '@ohos.notificationSubscribe';
-
创建订阅者对象。
let subscriber = { onConsume: function (data) { let req = data.request; console.info(`onConsume callback. req.id: ${req.id}`); }, onCancel: function (data) { let req = data.request; console.info(`onCancel callback. req.id: ${req.id}`); }, onUpdate: function (data) { let req = data.request; console.info(`onUpdate callback. req.id: ${req.id}`); }, onConnect: function () { console.info(`onConnect callback.}`); }, onDisconnect: function () { console.info(`onDisconnect callback.}`); }, onDestroy: function () { console.info(`onDestroy callback.}`); }, };
-
发起通知订阅。
notificationSubscribe.subscribe(subscriber, (err, data) => { // callback形式调用异步接口 if (err) { console.error(`Failed to subscribe notification. Code is ${err.code}, message is ${err.message}`); return; } console.info(`Succeeded in subscribing to notification. Data: ${data}`); });