harmony 鸿蒙@ohos.notificationSubscribe (NotificationSubscribe模块)

2022-12-13 浏览 (811)

@ohos.notificationSubscribe (NotificationSubscribe模块)

本模块提供通知订阅、取消订阅、通知移除等,一般情况下,只有系统应用具有这些操作权限。

说明:

本模块首批接口从API version 9开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。

导入模块

import notificationSubscribe from '@ohos.notificationSubscribe';

NotificationSubscribe.subscribe

subscribe(subscriber: NotificationSubscriber, info: NotificationSubscribeInfo, callback: AsyncCallback<void>): void

订阅通知并指定订阅信息(callback形式)。

系统能力:SystemCapability.Notification.Notification

需要权限: ohos.permission.NOTIFICATION_CONTROLLER

系统API: 此接口为系统接口,三方应用不支持调用。

参数:

参数名类型必填说明
subscriberNotificationSubscriber通知订阅对象。
infoNotificationSubscribeInfo通知订阅信息。
callbackAsyncCallback<void>订阅动作回调函数。

错误码:

错误码详细介绍请参考errcode-notification

错误码ID错误信息
1600001Internal error.
1600002Marshalling or unmarshalling error.
1600003Failed to connect service.
1600012No memory space.

示例:

import Base from '@ohos.base';

//subscribe回调
let subscribeCallback = (err: Base.BusinessError) => {
  if (err) {
    console.error(`subscribe failed, code is ${err.code}, message is ${err.message}`);
  } else {
    console.info("subscribe success");
  }
}
let onConsumeCallback = (data: notificationSubscribe.SubscribeCallbackData) => {
  console.info("Consume callback: " + JSON.stringify(data));
}
let subscriber: notificationSubscribe.NotificationSubscriber = {
  onConsume: onConsumeCallback
};
//不会对bundleNames进行校验,开发者自己确定需要订阅哪些bundleName
let info: notificationSubscribe.NotificationSubscribeInfo = {
  bundleNames: ["bundleName1","bundleName2"]
};
notificationSubscribe.subscribe(subscriber, info, subscribeCallback);

NotificationSubscribe.subscribe

subscribe(subscriber: NotificationSubscriber, callback: AsyncCallback<void>): void

订阅当前用户下所有应用的通知(callback形式)。

系统能力:SystemCapability.Notification.Notification

需要权限: ohos.permission.NOTIFICATION_CONTROLLER

系统API: 此接口为系统接口,三方应用不支持调用。

参数:

参数名类型必填说明
subscriberNotificationSubscriber通知订阅对象。
callbackAsyncCallback<void>订阅动作回调函数。

错误码:

错误码详细介绍请参考errcode-notification

错误码ID错误信息
1600001Internal error.
1600002Marshalling or unmarshalling error.
1600003Failed to connect service.
1600012No memory space.

示例:

import Base from '@ohos.base';

let subscribeCallback = (err: Base.BusinessError) => {
  if (err) {
    console.error(`subscribe failed, code is ${err.code}, message is ${err.message}`);
  } else {
    console.info("subscribe success");
  }
}
let onConsumeCallback = (data: notificationSubscribe.SubscribeCallbackData) => {
  console.info("Consume callback: " + JSON.stringify(data));
}
let subscriber: notificationSubscribe.NotificationSubscriber = {
  onConsume: onConsumeCallback
};
notificationSubscribe.subscribe(subscriber, subscribeCallback);

NotificationSubscribe.subscribe

subscribe(subscriber: NotificationSubscriber, info?: NotificationSubscribeInfo): Promise<void>

订阅通知并指定订阅信息(Promise形式)。

系统能力:SystemCapability.Notification.Notification

需要权限: ohos.permission.NOTIFICATION_CONTROLLER

系统API: 此接口为系统接口,三方应用不支持调用。

参数:

参数名类型必填说明
subscriberNotificationSubscriber通知订阅对象。
infoNotificationSubscribeInfo通知订阅信息,默认为空。

返回值:

类型说明
Promise<void>无返回结果的Promise对象。

错误码:

错误码详细介绍请参考errcode-notification

错误码ID错误信息
1600001Internal error.
1600002Marshalling or unmarshalling error.
1600003Failed to connect service.
1600012No memory space.

示例:

import Base from '@ohos.base';

let onConsumeCallback = (data: notificationSubscribe.SubscribeCallbackData) => {
  console.info("Consume callback: " + JSON.stringify(data));
}
let subscriber: notificationSubscribe.NotificationSubscriber = {
  onConsume: onConsumeCallback
};
notificationSubscribe.subscribe(subscriber).then(() => {
  console.info("subscribe success");
}).catch((err: Base.BusinessError) => {
  console.error("subscribe fail: " + JSON.stringify(err));
});

NotificationSubscribe.unsubscribe

unsubscribe(subscriber: NotificationSubscriber, callback: AsyncCallback<void>): void

取消订阅(callbcak形式)。

系统能力:SystemCapability.Notification.Notification

需要权限: ohos.permission.NOTIFICATION_CONTROLLER

系统API: 此接口为系统接口,三方应用不支持调用。

参数:

参数名类型必填说明
subscriberNotificationSubscriber通知订阅对象。
callbackAsyncCallback<void>取消订阅动作回调函数。

错误码:

错误码详细介绍请参考errcode-notification

错误码ID错误信息
1600001Internal error.
1600002Marshalling or unmarshalling error.
1600003Failed to connect service.

示例:

import Base from '@ohos.base';

let unsubscribeCallback = (err: Base.BusinessError) => {
  if (err) {
    console.error(`unsubscribe failed, code is ${err.code}, message is ${err.message}`);
  } else {
    console.info("unsubscribe success");
  }
}
let onDisconnectCallback = () => {
  console.info("subscribe disconnect");
}
let subscriber: notificationSubscribe.NotificationSubscriber = {
  onDisconnect: onDisconnectCallback
};
notificationSubscribe.unsubscribe(subscriber, unsubscribeCallback);

NotificationSubscribe.unsubscribe

unsubscribe(subscriber: NotificationSubscriber): Promise<void>

取消订阅(Promise形式)。

系统能力:SystemCapability.Notification.Notification

需要权限: ohos.permission.NOTIFICATION_CONTROLLER

系统API: 此接口为系统接口,三方应用不支持调用。

参数:

参数名类型必填说明
subscriberNotificationSubscriber通知订阅对象。

返回值:

类型说明
Promise<void>无返回结果的Promise对象。

错误码:

错误码详细介绍请参考errcode-notification

错误码ID错误信息
1600001Internal error.
1600002Marshalling or unmarshalling error.
1600003Failed to connect service.

示例:

import Base from '@ohos.base';

let onDisconnectCallback = () => {
  console.info("subscribe disconnect");
}
let subscriber: notificationSubscribe.NotificationSubscriber = {
  onDisconnect: onDisconnectCallback
};
notificationSubscribe.unsubscribe(subscriber).then(() => {
  console.info("unsubscribe success");
}).catch((err: Base.BusinessError) => {
  console.error("unsubscribe fail: " + JSON.stringify(err));
});

NotificationSubscribe.remove

remove(bundle: BundleOption, notificationKey: NotificationKey, reason: RemoveReason, callback: AsyncCallback<void>): void

删除指定通知(Callback形式)。

系统能力:SystemCapability.Notification.Notification

需要权限: ohos.permission.NOTIFICATION_CONTROLLER

系统API: 此接口为系统接口,三方应用不支持调用。

参数:

参数名类型必填说明
bundleBundleOption指定应用的包信息。
notificationKeyNotificationKey通知键值。
reasonRemoveReason通知删除原因。
callbackAsyncCallback<void>删除指定通知回调函数。

错误码:

错误码详细介绍请参考errcode-notification

错误码ID错误信息
1600001Internal error.
1600002Marshalling or unmarshalling error.
1600003Failed to connect service.
1600007The notification is not exist.
17700001The specified bundle name was not found.

示例:

import Base from '@ohos.base';
import NotificationManager from '@ohos.notificationManager';

let removeCallback = (err: Base.BusinessError) => {
  if (err) {
    console.error(`remove failed, code is ${err.code}, message is ${err.message}`);
  } else {
    console.info("remove success");
  }
}
let bundle: NotificationManager.BundleOption = {
  bundle: "bundleName1",
};
let notificationKey: notificationSubscribe.NotificationKey = {
  id: 0,
  label: "label",
};
let reason: notificationSubscribe.RemoveReason = notificationSubscribe.RemoveReason.CLICK_REASON_REMOVE;
notificationSubscribe.remove(bundle, notificationKey, reason, removeCallback);

NotificationSubscribe.remove

remove(bundle: BundleOption, notificationKey: NotificationKey, reason: RemoveReason): Promise<void>

删除指定通知(Promise形式)。

系统能力:SystemCapability.Notification.Notification

需要权限: ohos.permission.NOTIFICATION_CONTROLLER

系统API: 此接口为系统接口,三方应用不支持调用。

参数:

参数名类型必填说明
bundleBundleOption指定应用的包信息。
notificationKeyNotificationKey通知键值。
reasonRemoveReason通知删除原因。

返回值:

类型说明
Promise<void>无返回结果的Promise对象。

错误码:

错误码详细介绍请参考errcode-notification

错误码ID错误信息
1600001Internal error.
1600002Marshalling or unmarshalling error.
1600003Failed to connect service.
1600007The notification is not exist.
17700001The specified bundle name was not found.

示例:

import Base from '@ohos.base';
import NotificationManager from '@ohos.notificationManager';

let bundle: NotificationManager.BundleOption = {
  bundle: "bundleName1",
};
let notificationKey: notificationSubscribe.NotificationKey = {
  id: 0,
  label: "label",
};
let reason: notificationSubscribe.RemoveReason = notificationSubscribe.RemoveReason.CLICK_REASON_REMOVE;
notificationSubscribe.remove(bundle, notificationKey, reason).then(() => {
  console.info("remove success");
}).catch((err: Base.BusinessError) => {
  console.error("remove fail: " + JSON.stringify(err));
});

NotificationSubscribe.remove

remove(hashCode: string, reason: RemoveReason, callback: AsyncCallback<void>): void

删除指定通知(Callback形式)。

系统能力:SystemCapability.Notification.Notification

需要权限: ohos.permission.NOTIFICATION_CONTROLLER

系统API: 此接口为系统接口,三方应用不支持调用。

参数:

参数名类型必填说明
hashCodestring通知唯一ID。可以通过onConsume回调的入参SubscribeCallbackData获取其内部NotificationRequest对象中的hashCode。
reasonRemoveReason通知删除原因。
callbackAsyncCallback<void>删除指定通知回调函数。

错误码:

错误码详细介绍请参考errcode-notification

错误码ID错误信息
1600001Internal error.
1600002Marshalling or unmarshalling error.
1600003Failed to connect service.
1600007The notification is not exist.

示例:

import Base from '@ohos.base';

let hashCode: string = 'hashCode';

let removeCallback = (err: Base.BusinessError) => {
  if (err) {
    console.error(`remove failed, code is ${err.code}, message is ${err.message}`);
  } else {
    console.info("remove success");
  }
}
let reason: notificationSubscribe.RemoveReason = notificationSubscribe.RemoveReason.CANCEL_REASON_REMOVE;
notificationSubscribe.remove(hashCode, reason, removeCallback);

NotificationSubscribe.remove

remove(hashCode: string, reason: RemoveReason): Promise<void>

删除指定通知(Promise形式)。

系统能力:SystemCapability.Notification.Notification

需要权限: ohos.permission.NOTIFICATION_CONTROLLER

系统API: 此接口为系统接口,三方应用不支持调用。

参数:

参数名类型必填说明
hashCodestring通知唯一ID。
reasonRemoveReason通知删除原因。

返回值:

类型说明
Promise<void>无返回结果的Promise对象。

错误码:

错误码详细介绍请参考errcode-notification

错误码ID错误信息
1600001Internal error.
1600002Marshalling or unmarshalling error.
1600003Failed to connect service.
1600007The notification is not exist.

示例:

import Base from '@ohos.base';

let hashCode: string = 'hashCode';
let reason: notificationSubscribe.RemoveReason = notificationSubscribe.RemoveReason.CLICK_REASON_REMOVE;
notificationSubscribe.remove(hashCode, reason).then(() => {
	console.info("remove success");
}).catch((err: Base.BusinessError) => {
  console.error("remove fail: " + JSON.stringify(err));
});

NotificationSubscribe.remove10+

remove(hashCodes: Array<String>, reason: RemoveReason, callback: AsyncCallback<void>): void

批量删除指定通知(Callback形式)。

系统能力:SystemCapability.Notification.Notification

需要权限: ohos.permission.NOTIFICATION_CONTROLLER

系统API: 此接口为系统接口,三方应用不支持调用。

参数:

参数名类型必填说明
hashCodesArray<String>通知唯一ID数组集合。可以通过onConsume回调的入参SubscribeCallbackData获取其内部NotificationRequest对象中的hashCode。
reasonRemoveReason通知删除原因。
callbackAsyncCallback<void>删除指定通知回调函数。

错误码:

错误码详细介绍请参考errcode-notification

错误码ID错误信息
1600001Internal error.
1600002Marshalling or unmarshalling error.
1600003Failed to connect service.

示例:

import Base from '@ohos.base';

let hashCodes: string[] = ['hashCode1', 'hashCode2'];

let removeCallback = (err: Base.BusinessError) => {
  if (err) {
    console.error(`remove failed, code is ${err.code}, message is ${err.message}`);
  } else {
    console.info("remove success");
  }
}
let reason: notificationSubscribe.RemoveReason = notificationSubscribe.RemoveReason.CANCEL_REASON_REMOVE;
notificationSubscribe.remove(hashCodes, reason, removeCallback);

NotificationSubscribe.remove10+

remove(hashCodes: Array<String>, reason: RemoveReason): Promise<void>

批量删除指定通知(Promise形式)。

系统能力:SystemCapability.Notification.Notification

需要权限: ohos.permission.NOTIFICATION_CONTROLLER

系统API: 此接口为系统接口,三方应用不支持调用。

参数:

参数名类型必填说明
hashCodesArray<String>通知唯一ID数组集合。
reasonRemoveReason通知删除原因。

返回值:

类型说明
Promise<void>无返回结果的Promise对象。

错误码:

错误码详细介绍请参考errcode-notification

错误码ID错误信息
1600001Internal error.
1600002Marshalling or unmarshalling error.
1600003Failed to connect service.

示例:

import Base from '@ohos.base';

let hashCodes: string[] = ['hashCode1','hashCode2'];
let reason: notificationSubscribe.RemoveReason = notificationSubscribe.RemoveReason.CLICK_REASON_REMOVE;
notificationSubscribe.remove(hashCodes, reason).then(() => {
  console.info("remove success");
}).catch((err: Base.BusinessError) => {
  console.error("remove fail: " + JSON.stringify(err));
});

NotificationSubscribe.removeAll

removeAll(bundle: BundleOption, callback: AsyncCallback<void>): void

删除指定应用的所有通知(Callback形式)。

系统能力:SystemCapability.Notification.Notification

系统API:此接口为系统接口,三方应用不支持调用。

需要权限: ohos.permission.NOTIFICATION_CONTROLLER

参数:

参数名类型必填说明
bundleBundleOption指定应用的包信息。
callbackAsyncCallback<void>删除指定应用的所有通知回调函数。

错误码:

错误码详细介绍请参考errcode-notification

错误码ID错误信息
1600001Internal error.
1600002Marshalling or unmarshalling error.
1600003Failed to connect service.
17700001The specified bundle name was not found.

示例:

import Base from '@ohos.base';

let removeAllCallback = (err: Base.BusinessError) => {
  if (err) {
    console.error(`removeAll failed, code is ${err.code}, message is ${err.message}`);
  } else {
    console.info("removeAll success");
  }
}
let bundle: notificationSubscribe.BundleOption = {
  bundle: "bundleName1",
};
notificationSubscribe.removeAll(bundle, removeAllCallback);

NotificationSubscribe.removeAll

removeAll(callback: AsyncCallback<void>): void

删除所有通知(Callback形式)。

系统能力:SystemCapability.Notification.Notification

需要权限: ohos.permission.NOTIFICATION_CONTROLLER

系统API: 此接口为系统接口,三方应用不支持调用。

参数:

参数名类型必填说明
callbackAsyncCallback<void>删除所有通知回调函数。

错误码:

错误码详细介绍请参考errcode-notification

错误码ID错误信息
1600001Internal error.
1600002Marshalling or unmarshalling error.
1600003Failed to connect service.

示例:

import Base from '@ohos.base';

let removeAllCallback = (err: Base.BusinessError) => {
    if (err) {
        console.error(`removeAll failed, code is ${err.code}, message is ${err.message}`);
    } else {
        console.info("removeAll success");
    }
}

notificationSubscribe.removeAll(removeAllCallback);

NotificationSubscribe.removeAll

removeAll(bundle?: BundleOption): Promise<void>

删除指定应用的所有通知(Promise形式)。

系统能力:SystemCapability.Notification.Notification

需要权限: ohos.permission.NOTIFICATION_CONTROLLER

系统API: 此接口为系统接口,三方应用不支持调用。

参数:

参数名类型必填说明
bundleBundleOption指定应用的包信息。默认为空,表示删除所有通知。

返回值:

类型说明
Promise<void>无返回结果的Promise对象。

错误码:

错误码详细介绍请参考errcode-notification

错误码ID错误信息
1600001Internal error.
1600002Marshalling or unmarshalling error.
1600003Failed to connect service.
17700001The specified bundle name was not found.

示例:

import Base from '@ohos.base';

// 不指定应用时,删除所有通知
notificationSubscribe.removeAll().then(() => {
	console.info("removeAll success");
}).catch((err: Base.BusinessError) => {
  console.error("removeAll fail: " + JSON.stringify(err));
});

NotificationSubscribe.removeAll

removeAll(userId: number, callback: AsyncCallback<void>): void

删除指定用户下的所有通知(callback形式)。

系统能力:SystemCapability.Notification.Notification

需要权限: ohos.permission.NOTIFICATION_CONTROLLER

系统API: 此接口为系统接口,三方应用不支持调用。

参数:

参数名类型必填说明
userIdnumber用户ID。
callbackAsyncCallback<void>删除指定用户所有通知回调函数。

错误码:

错误码详细介绍请参考errcode-notification

错误码ID错误信息
1600001Internal error.
1600002Marshalling or unmarshalling error.
1600003Failed to connect service.
1600008The user is not exist.

示例:

import Base from '@ohos.base';

let removeAllCallback = (err: Base.BusinessError) => {
  if (err) {
    console.error(`removeAll failed, code is ${err.code}, message is ${err.message}`);
  } else {
    console.info("removeAll success");
  }
}

let userId: number = 1;

notificationSubscribe.removeAll(userId, removeAllCallback);

NotificationSubscribe.removeAll

removeAll(userId: number): Promise<void>

删除指定用户下的所有通知(Promise形式)。

系统能力:SystemCapability.Notification.Notification

需要权限: ohos.permission.NOTIFICATION_CONTROLLER

系统API: 此接口为系统接口,三方应用不支持调用。

参数:

参数名类型必填说明
userIdnumber用户ID。

错误码:

错误码详细介绍请参考errcode-notification

错误码ID错误信息
1600001Internal error.
1600002Marshalling or unmarshalling error.
1600003Failed to connect service.
1600008The user is not exist.

示例:

import Base from '@ohos.base';

let removeAllCallback = (err: Base.BusinessError) => {
  if (err) {
    console.error(`removeAll failed, code is ${err.code}, message is ${err.message}`);
  } else {
    console.info("removeAll success");
  }
}

let userId: number = 1;

notificationSubscribe.removeAll(userId, removeAllCallback);

NotificationKey

系统能力:以下各项对应的系统能力均为SystemCapability.Notification.Notification

系统API: 此接口为系统接口,三方应用不支持调用。

名称类型必填说明
idnumber通知ID。
labelstring通知标签,默认为空。

RemoveReason

系统能力:SystemCapability.Notification.Notification

系统API: 此接口为系统接口,三方应用不支持调用。

名称说明
CLICK_REASON_REMOVE1点击通知后删除通知。
CANCEL_REASON_REMOVE2用户删除通知。

你可能感兴趣的鸿蒙文章

harmony 鸿蒙接口

harmony 鸿蒙系统公共事件定义(待停用)

harmony 鸿蒙系统公共事件定义

harmony 鸿蒙开发说明

harmony 鸿蒙企业设备管理概述(仅对系统应用开放)

harmony 鸿蒙BundleStatusCallback

harmony 鸿蒙@ohos.bundle.innerBundleManager (innerBundleManager模块)

harmony 鸿蒙@ohos.distributedBundle (分布式包管理)

harmony 鸿蒙@ohos.bundle (Bundle模块)

harmony 鸿蒙@ohos.enterprise.EnterpriseAdminExtensionAbility (企业设备管理扩展能力)

  • 所属分类: 后端技术
  • 本文标签: 软件 鸿蒙
  • 版权声明: 本文链接 https://seaxiang.com/blog/98a561ec961248a5b657837bd0935590