@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。