@ohos.commonEventManager (公共事件模块)
本模块提供了公共事件的能力,包括公共事件的权限列表,发布公共事件,订阅或取消订阅公共事件,获取或修改公共事件结果代码、结果数据等。
说明:
本模块首批接口从API version 9开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
导入模块
import CommonEventManager from '@ohos.commonEventManager';
Support
系统公共事件是指由系统服务或系统应用发布的事件,订阅这些系统公共事件需要特定的权限。发布或订阅这些事件需要使用如下链接中的枚举定义。
全部系统公共事件枚举定义请参见系统公共事件定义。
CommonEventManager.publish
publish(event: string, callback: AsyncCallback<void>): void
发布公共事件(callback形式)。
系统能力: SystemCapability.Notification.CommonEvent
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
event | string | 是 | 表示要发送的公共事件。 |
callback | AsyncCallback<void> | 是 | 表示被指定的回调方法。 |
错误码: 以下错误码详细介绍请参考@ohos.commonEventManager(事件)
错误码ID | 错误信息 |
---|---|
1500004 | not System services or System app |
1500007 | message send error |
1500008 | CEMS error |
1500009 | system error |
错误码ID | 错误信息 |
-------- | ----------------------------------- |
1500004 | not System services. |
1500007 | error sending message to Common Event Service. |
1500008 | Common Event Service does not complete initialization. |
1500009 | error obtaining system parameters. |
示例:
//发布公共事件回调
function publishCallBack(err) {
if (err) {
console.error("publish failed " + JSON.stringify(err));
} else {
console.info("publish");
}
}
//发布公共事件
try {
CommonEventManager.publish("event", publishCallBack);
} catch(err) {
console.error('publish failed, catch error' + JSON.stringify(err));
}
CommonEventManager.publish
publish(event: string, options: CommonEventPublishData, callback: AsyncCallback<void>): void
发布公共事件指定发布信息(callback形式)。
系统能力: SystemCapability.Notification.CommonEvent
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
event | string | 是 | 表示要发布的公共事件。 |
options | CommonEventPublishData | 是 | 表示发布公共事件的属性。 |
callback | syncCallback<void> | 是 | 表示被指定的回调方法。 |
错误码:
错误码ID | 错误信息 |
---|---|
1500004 | not System services or System app |
1500007 | message send error |
1500008 | CEMS error |
1500009 | system error |
错误码ID | 错误信息 |
---|---|
1500004 | not System services. |
1500007 | error sending message to Common Event Service. |
1500008 | Common Event Service does not complete initialization. |
1500009 | error obtaining system parameters. |
示例:
//公共事件相关信息
var options = {
code: 0, //公共事件的初始代码
data: "initial data",//公共事件的初始数据
isOrdered: true //有序公共事件
}
//发布公共事件回调
function publishCallBack(err) {
if (err) {
console.error("publish failed " + JSON.stringify(err));
} else {
console.info("publish");
}
}
//发布公共事件
try {
CommonEventManager.publish("event", options, publishCallBack);
} catch (err) {
console.error('publish failed, catch error' + JSON.stringify(err));
}
CommonEventManager.publishAsUser
publishAsUser(event: string, userId: number, callback: AsyncCallback<void>): void
向指定用户发布公共事件(callback形式)。
系统能力: SystemCapability.Notification.CommonEvent
系统API:此接口为系统接口,三方应用不支持调用。
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
event | string | 是 | 表示要发送的公共事件。 |
userId | number | 是 | 表示指定向该用户ID发送此公共事件。 |
callback | AsyncCallback<void> | 是 | 表示被指定的回调方法。 |
错误码:
错误码ID | 错误信息 |
---|---|
1500004 | not System services or System app |
1500007 | message send error |
1500008 | CEMS error |
1500009 | system error |
错误码ID | 错误信息 |
-------- | ----------------------------------- |
1500004 | not System services. |
1500007 | error sending message to Common Event Service. |
1500008 | Common Event Service does not complete initialization. |
1500009 | error obtaining system parameters. |
示例:
//发布公共事件回调
function publishAsUserCallBack(err) {
if (err) {
console.error("publishAsUser failed " + JSON.stringify(err));
} else {
console.info("publishAsUser");
}
}
//指定发送的用户
var userId = 100;
//发布公共事件
try {
CommonEventManager.publishAsUser("event", userId, publishAsUserCallBack);
} catch (err) {
console.error('publishAsUser failed, catch error' + JSON.stringify(err));
}
CommonEventManager.publishAsUser
publishAsUser(event: string, userId: number, options: CommonEventPublishData, callback: AsyncCallback<void>): void
向指定用户发布公共事件并指定发布信息(callback形式)。
系统能力: SystemCapability.Notification.CommonEvent
系统API:此接口为系统接口,三方应用不支持调用。
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
event | string | 是 | 表示要发布的公共事件。 |
userId | number | 是 | 表示指定向该用户ID发送此公共事件。 |
options | CommonEventPublishData | 是 | 表示发布公共事件的属性。 |
callback | AsyncCallback<void> | 是 | 表示被指定的回调方法。 |
错误码:
错误码ID | 错误信息 |
---|---|
1500004 | not System services or System app |
1500007 | message send error |
1500008 | CEMS error |
1500009 | system error |
错误码ID | 错误信息 |
-------- | ----------------------------------- |
1500004 | not System services or System app. |
1500007 | error sending message to Common Event Service. |
1500008 | Common Event Service does not complete initialization. |
1500009 | error obtaining system parameters. |
示例:
//公共事件相关信息
var options = {
code: 0, //公共事件的初始代码
data: "initial data",//公共事件的初始数据
}
//发布公共事件回调
function publishAsUserCallBack(err) {
if (err) {
console.error("publishAsUser failed " + JSON.stringify(err));
} else {
console.info("publishAsUser");
}
}
//指定发送的用户
var userId = 100;
//发布公共事件
try {
CommonEventManager.publishAsUser("event", userId, options, publishAsUserCallBack);
} catch (err) {
console.error('publishAsUser failed, catch error' + JSON.stringify(err));
}
CommonEventManager.createSubscriber
createSubscriber(subscribeInfo: CommonEventSubscribeInfo, callback: AsyncCallback<CommonEventSubscriber>): void
创建订阅者(callback形式)。
系统能力: SystemCapability.Notification.CommonEvent
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
subscribeInfo | CommonEventSubscribeInfo | 是 | 表示订阅信息。 |
callback | AsyncCallback<CommonEventSubscriber> | 是 | 表示创建订阅者的回调方法。 |
示例:
var subscriber; //用于保存创建成功的订阅者对象,后续使用其完成订阅及退订的动作
//订阅者信息
var subscribeInfo = {
events: ["event"]
};
//创建订阅者回调
function createSubscriberCallBack(err, commonEventSubscriber) {
if(!err) {
console.info("createSubscriber");
subscriber = commonEventSubscriber;
} else {
console.error("createSubscriber failed " + JSON.stringify(err));
}
}
//创建订阅者
try {
CommonEventManager.createSubscriber(subscribeInfo, createSubscriberCallBack);
} catch (err) {
console.error('createSubscriber failed, catch error' + JSON.stringify(err));
}
CommonEventManager.createSubscriber
createSubscriber(subscribeInfo: CommonEventSubscribeInfo): Promise<CommonEventSubscriber>
创建订阅者(Promise形式)。
系统能力: SystemCapability.Notification.CommonEvent
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
subscribeInfo | CommonEventSubscribeInfo | 是 | 表示订阅信息。 |
返回值:
类型 | 说明 |
---|---|
Promise<CommonEventSubscriber> | 返回订阅者对象。 |
示例:
var subscriber; //用于保存创建成功的订阅者对象,后续使用其完成订阅及退订的动作
//订阅者信息
var subscribeInfo = {
events: ["event"]
};
//创建订阅者
try {
CommonEventManager.createSubscriber(subscribeInfo).then((commonEventSubscriber) => {
console.info("createSubscriber");
subscriber = commonEventSubscriber;
}).catch((err) => {
console.error("createSubscriber failed " + JSON.stringify(err));
});
} catch(err) {
console.error('createSubscriber failed, catch error' + JSON.stringify(err));
}
CommonEventManager.subscribe
subscribe(subscriber: CommonEventSubscriber, callback: AsyncCallback<CommonEventData>): void
订阅公共事件(callback形式)。
系统能力: SystemCapability.Notification.CommonEvent
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
subscriber | CommonEventSubscriber | 是 | 表示订阅者对象。 |
callback | AsyncCallback<CommonEventData> | 是 | 表示接收公共事件数据的回调函数。 |
错误码:
错误码介绍请参考@ohos.commonEventManager(事件)
错误码ID | 错误信息 |
---|---|
801 | capability not supported. |
1500007 | error sending message to Common Event Service. |
1500008 | Common Event Service does not complete initialization. |
示例:
//订阅者信息
var subscriber; //用于保存创建成功的订阅者对象,后续使用其完成订阅及退订的动作
//订阅者信息
var subscribeInfo = {
events: ["event"]
};
//订阅公共事件回调
function SubscribeCallBack(err, data) {
if (err) {
console.error("subscribe failed " + JSON.stringify(err));
} else {
console.info("subscribe ");
}
}
//创建订阅者回调
function createSubscriberCallBack(err, commonEventSubscriber) {
if(!err) {
console.info("createSubscriber");
subscriber = commonEventSubscriber;
//订阅公共事件
try {
CommonEventManager.subscribe(subscriber, SubscribeCallBack);
} catch (err) {
console.error("createSubscriber failed " + JSON.stringify(err));
}
} else {
console.error("createSubscriber failed " + JSON.stringify(err));
}
}
//创建订阅者
try {
CommonEventManager.createSubscriber(subscribeInfo, createSubscriberCallBack);
} catch (err) {
console.error('createSubscriber failed, catch error' + JSON.stringify(err));
}
CommonEventManager.unsubscribe
unsubscribe(subscriber: CommonEventSubscriber, callback?: AsyncCallback<void>): void
取消订阅公共事件(callback形式)。
系统能力: SystemCapability.Notification.CommonEvent
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
subscriber | CommonEventSubscriber | 是 | 表示订阅者对象。 |
callback | AsyncCallback<void> | 否 | 表示取消订阅的回调方法。 |
错误码:
错误码介绍请参考@ohos.commonEventManager(事件)
错误码ID | 错误信息 |
---|---|
801 | capability not supported. |
1500007 | error sending message to Common Event Service. |
1500008 | Common Event Service does not complete initialization. |
示例:
var subscriber; //用于保存创建成功的订阅者对象,后续使用其完成订阅及退订的动作
//订阅者信息
var subscribeInfo = {
events: ["event"]
};
//订阅公共事件回调
function subscribeCallBack(err, data) {
if (err) {
console.info("subscribe failed " + JSON.stringify(err));
} else {
console.info("subscribe");
}
}
//创建订阅者回调
function createSubscriberCallBack(err, commonEventSubscriber) {
if (err) {
console.info("createSubscriber failed " + JSON.stringify(err));
} else {
console.info("createSubscriber");
subscriber = commonEventSubscriber;
//订阅公共事件
try {
CommonEventManager.subscribe(subscriber, subscribeCallBack);
} catch(err) {
console.info("subscribe failed " + JSON.stringify(err));
}
}
}
//取消订阅公共事件回调
function unsubscribeCallBack(err) {
if (err) {
console.info("unsubscribe failed " + JSON.stringify(err));
} else {
console.info("unsubscribe");
}
}
//创建订阅者
try {
CommonEventManager.createSubscriber(subscribeInfo, createSubscriberCallBack);
} catch (err) {
console.info("createSubscriber failed " + JSON.stringify(err));
}
//取消订阅公共事件
try {
CommonEventManager.unsubscribe(subscriber, unsubscribeCallBack);
} catch (err) {
console.info("unsubscribe failed " + JSON.stringify(err));
}
CommonEventData
系统能力: 以下各项对应的系统能力均为SystemCapability.Notification.CommonEvent
名称 | 类型 | 可读 | 可写 | 说明 |
---|---|---|---|---|
event | string | 是 | 否 | 表示当前接收的公共事件名称。 |
bundleName | string | 是 | 否 | 表示包名称。 |
code | number | 是 | 否 | 表示公共事件的结果代码,用于传递int类型的数据。 |
data | string | 是 | 否 | 表示公共事件的自定义结果数据,用于传递string类型的数据。 |
parameters | {[key: string]: any} | 是 | 否 | 表示公共事件的附加信息。 |
CommonEventPublishData
系统能力: 以下各项对应的系统能力均为SystemCapability.Notification.CommonEvent
名称 | 类型 | 可读 | 可写 | 说明 |
---|---|---|---|---|
bundleName | string | 是 | 否 | 表示包名称。 |
code | number | 是 | 否 | 表示公共事件的结果代码。 |
data | string | 是 | 否 | 表示公共事件的自定义结果数据。 |
subscriberPermissions | Array<string> | 是 | 否 | 表示订阅者的权限。 |
isOrdered | boolean | 是 | 否 | 表示是否是有序事件。 |
isSticky | boolean | 是 | 否 | 表示是否是粘性事件。仅系统应用或系统服务允许发送粘性事件。 |
parameters | {[key: string]: any} | 是 | 否 | 表示公共事件的附加信息。 |
CommonEventSubscribeInfo
系统能力: 以下各项对应的系统能力均为SystemCapability.Notification.CommonEvent
名称 | 类型 | 可读 | 可写 | 说明 |
---|---|---|---|---|
events | Array<string> | 是 | 否 | 表示要发送的公共事件。 |
publisherPermission | string | 是 | 否 | 表示发布者的权限。 |
publisherDeviceId | string | 是 | 否 | 表示设备ID,该值必须是同一ohos网络上的现有设备ID。 |
userId | number | 是 | 否 | 表示用户ID。此参数是可选的,默认值当前用户的ID。如果指定了此参数,则该值必须是系统中现有的用户ID。 |
priority | number | 是 | 否 | 表示订阅者的优先级。值的范围是-100到1000。 |