# @ohos.commonEventManager (公共事件模å—) æœ¬æ¨¡å—æä¾›äº†å…¬å…±äº‹ä»¶ç›¸å…³çš„èƒ½åŠ›ï¼ŒåŒ…æ‹¬å‘布公共事件ã€è®¢é˜…公共事件ã€ä»¥åŠé€€è®¢å…¬å…±äº‹ä»¶ã€‚ > **说明:** > > 本模å—首批接å£ä»ŽAPI version 9开始支æŒã€‚åŽç»ç‰ˆæœ¬çš„æ–°å¢žæŽ¥å£ï¼Œé‡‡ç”¨ä¸Šè§’æ ‡å•ç‹¬æ ‡è®°æŽ¥å£çš„起始版本。 ## å¯¼å…¥æ¨¡å— ```ts import { commonEventManager } from '@kit.BasicServicesKit'; ``` ## Support 系统公共事件是指由系统æœåŠ¡æˆ–ç³»ç»Ÿåº”ç”¨å‘布的事件,订阅这些公共事件需è¦ç‰¹å®šçš„æƒé™ã€ä½¿ç”¨ç›¸åº”的值,详è§[系统定义的公共事件](./common_event/commonEventManager-definitions.md)。 ## commonEventManager.publish publish(event: string, callback: AsyncCallback\<void>): void å‘布公共事件。使用callback异æ¥å›žè°ƒã€‚ **原å化æœåŠ¡API:** 从API version 11å¼€å§‹ï¼Œè¯¥æŽ¥å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力:** SystemCapability.Notification.CommonEvent **傿•°ï¼š** | 傿•°å | 类型 | å¿…å¡« | 说明 | | -------- | -------------------- | ---- | ---------------------- | | event | string | 是 | 表示è¦å‘é€çš„公共事件。详è§[系统公共事件定义](./common_event/commonEventManager-definitions.md)。 | | callback | AsyncCallback\<void> | 是 | 表示事件å‘布åŽå°†è¦æ‰§è¡Œçš„回调函数。 | **错误ç :** 以下错误ç 的详细介ç»è¯·å‚è§[通用错误ç ](../errorcode-universal.md)å’Œ[事件错误ç ](./errorcode-CommonEventService.md)。 | 错误ç ID | é”™è¯¯ä¿¡æ¯ | | -------- | ----------------------------------- | | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. 3.Parameter verification failed. | | 1500004 | A third-party application cannot send system common events. | | 1500007 | Failed to send the message to the common event service. | | 1500008 | Failed to initialize the common event service. | | 1500009 | Failed to obtain system parameters. | **示例:** ```ts import { BusinessError } from '@kit.BasicServicesKit'; // å‘布公共事件回调 function publishCB(err: BusinessError) { if (err) { console.error(`publish failed, code is ${err.code}, message is ${err.message}`); } else { console.info("publish success"); } } // å‘布公共事件 try { commonEventManager.publish("event", publishCB); } catch (error) { let err: BusinessError = error as BusinessError; console.error(`publish failed, code is ${err.code}, message is ${err.message}`); } ``` ## commonEventManager.publish publish(event: string, options: CommonEventPublishData, callback: AsyncCallback\<void>): void å‘布公共事件。使用callback异æ¥å›žè°ƒã€‚ **原å化æœåŠ¡API:** 从API version 11å¼€å§‹ï¼Œè¯¥æŽ¥å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力:** SystemCapability.Notification.CommonEvent **傿•°ï¼š** | 傿•°å | 类型 | å¿…å¡« | 说明 | | -------- | ---------------------- | ---- | ---------------------- | | event | string | 是 | 表示è¦å‘布的公共事件。详è§[系统公共事件定义](./common_event/commonEventManager-definitions.md)。 | | options | [CommonEventPublishData](./js-apis-inner-commonEvent-commonEventPublishData.md) | 是 | 表示å‘布公共事件的属性。 | | callback | syncCallback\<void> | 是 | 表示被指定的回调方法。 | **错误ç :** 以下错误ç 的详细介ç»è¯·å‚è§[通用错误ç ](../errorcode-universal.md)å’Œ[事件错误ç ](./errorcode-CommonEventService.md)。 | 错误ç ID | é”™è¯¯ä¿¡æ¯ | | -------- | ----------------------------------- | | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. 3.Parameter verification failed. | | 1500004 | A third-party application cannot send system common events. | | 1500007 | Failed to send the message to the common event service. | | 1500008 | Failed to initialize the common event service. | | 1500009 | Failed to obtain system parameters. | **示例:** ```ts import { BusinessError } from '@kit.BasicServicesKit'; // å…¬å…±äº‹ä»¶ç›¸å…³ä¿¡æ¯ let options:commonEventManager.CommonEventPublishData = { code: 0, // 公共事件的åˆå§‹ä»£ç data: "initial data",// 公共事件的åˆå§‹æ•°æ® isOrdered: true // 有åºå…¬å…±äº‹ä»¶ } // å‘布公共事件回调 function publishCB(err: BusinessError) { if (err) { console.error(`publish failed, code is ${err.code}, message is ${err.message}`); } else { console.info("publish success"); } } // å‘布公共事件 try { commonEventManager.publish("event", options, publishCB); } catch (error) { let err: BusinessError = error as BusinessError; console.error(`publish failed, code is ${err.code}, message is ${err.message}`); } ``` ## commonEventManager.createSubscriber createSubscriber(subscribeInfo: CommonEventSubscribeInfo, callback: AsyncCallback\<CommonEventSubscriber>): void 创建订阅者。使用callback异æ¥å›žè°ƒã€‚ **原å化æœåŠ¡API:** 从API version 11å¼€å§‹ï¼Œè¯¥æŽ¥å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力:** SystemCapability.Notification.CommonEvent **傿•°ï¼š** | 傿•°å | 类型 | å¿…å¡« | 说明 | | ------------- | ------------------------------------------------------------ | ---- | -------------------------- | | subscribeInfo | [CommonEventSubscribeInfo](./js-apis-inner-commonEvent-commonEventSubscribeInfo.md) | 是 | 表示订阅信æ¯ã€‚ | | callback | AsyncCallback\<[CommonEventSubscriber](./js-apis-inner-commonEvent-commonEventSubscriber.md)> | 是 | 表示创建订阅者的回调方法。 | **错误ç :** 以下错误ç 的详细介ç»è¯·å‚è§[通用错误ç ](../errorcode-universal.md)。 | 错误ç ID | é”™è¯¯ä¿¡æ¯ | | -------- | ----------------------------------- | | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. 3.Parameter verification failed. | **示例:** ```ts import { BusinessError } from '@kit.BasicServicesKit'; // 定义订阅者,用于ä¿å˜åˆ›å»ºæˆåŠŸçš„è®¢é˜…è€…å¯¹è±¡ï¼ŒåŽç»ä½¿ç”¨å…¶å®Œæˆè®¢é˜…åŠé€€è®¢çš„动作 let subscriber:commonEventManager.CommonEventSubscriber; // è®¢é˜…è€…ä¿¡æ¯ let subscribeInfo:commonEventManager.CommonEventSubscribeInfo = { events: ["event"] }; // 创建订阅者回调 function createCB(err: BusinessError, commonEventSubscriber:commonEventManager.CommonEventSubscriber) { if(!err) { console.info("createSubscriber success"); subscriber = commonEventSubscriber; } else { console.error(`createSubscriber failed, code is ${err.code}, message is ${err.message}`); } } // 创建订阅者 try { commonEventManager.createSubscriber(subscribeInfo, createCB); } catch (error) { let err: BusinessError = error as BusinessError; console.error(`createSubscriber failed, code is ${err.code}, message is ${err.message}`); } ``` ## commonEventManager.createSubscriber createSubscriber(subscribeInfo: CommonEventSubscribeInfo): Promise\<CommonEventSubscriber> 创建订阅者。使用Promise异æ¥å›žè°ƒã€‚ **原å化æœåŠ¡API:** 从API version 11å¼€å§‹ï¼Œè¯¥æŽ¥å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力:** SystemCapability.Notification.CommonEvent **傿•°ï¼š** | 傿•°å | 类型 | å¿…å¡« | 说明 | | ------------- | ----------------------------------------------------- | ---- | -------------- | | subscribeInfo | [CommonEventSubscribeInfo](./js-apis-inner-commonEvent-commonEventSubscribeInfo.md) | 是 | 表示订阅信æ¯ã€‚ | **返回值:** | 类型 | 说明 | | --------------------------------------------------------- | ---------------- | | Promise\<[CommonEventSubscriber](./js-apis-inner-commonEvent-commonEventSubscriber.md)> | 以Promiseå½¢å¼è¿”回订阅者对象。 | **错误ç :** 以下错误ç 的详细介ç»è¯·å‚è§[通用错误ç ](../errorcode-universal.md)。 | 错误ç ID | é”™è¯¯ä¿¡æ¯ | | -------- | ----------------------------------- | | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. 3.Parameter verification failed. | **示例:** ```ts import { BusinessError } from '@kit.BasicServicesKit'; // 定义订阅者,用于ä¿å˜åˆ›å»ºæˆåŠŸçš„è®¢é˜…è€…å¯¹è±¡ï¼ŒåŽç»ä½¿ç”¨å…¶å®Œæˆè®¢é˜…åŠé€€è®¢çš„动作 let subscriber:commonEventManager.CommonEventSubscriber; // è®¢é˜…è€…ä¿¡æ¯ let subscribeInfo:commonEventManager.CommonEventSubscribeInfo = { events: ["event"] }; // 创建订阅者 commonEventManager.createSubscriber(subscribeInfo).then((commonEventSubscriber:commonEventManager.CommonEventSubscriber) => { console.info("createSubscriber success"); subscriber = commonEventSubscriber; }).catch((err: BusinessError) => { console.error(`createSubscriber failed, code is ${err.code}, message is ${err.message}`); }); ``` ## commonEventManager.createSubscriberSync<sup>10+</sup> createSubscriberSync(subscribeInfo: CommonEventSubscribeInfo): CommonEventSubscriber createSubscriberçš„åŒæ¥æŽ¥å£ã€‚ **原å化æœåŠ¡API:** 从API version 11å¼€å§‹ï¼Œè¯¥æŽ¥å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力:** SystemCapability.Notification.CommonEvent **傿•°ï¼š** | 傿•°å | 类型 | å¿…å¡« | 说明 | | ------------- | ----------------------------------------------------- | ---- | -------------- | | subscribeInfo | [CommonEventSubscribeInfo](./js-apis-inner-commonEvent-commonEventSubscribeInfo.md) | 是 | 表示订阅信æ¯ã€‚ | **返回值:** | 类型 | 说明 | | --------------------------------------------------------- | ---------------- | | [CommonEventSubscriber](./js-apis-inner-commonEvent-commonEventSubscriber.md) | 返回订阅者对象。 | **错误ç :** 以下错误ç 的详细介ç»è¯·å‚è§[通用错误ç ](../errorcode-universal.md)。 | 错误ç ID | é”™è¯¯ä¿¡æ¯ | | -------- | ----------------------------------- | | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. 3.Parameter verification failed. | **示例:** ```ts import { BusinessError } from '@kit.BasicServicesKit'; // 定义订阅者,用于ä¿å˜åˆ›å»ºæˆåŠŸçš„è®¢é˜…è€…å¯¹è±¡ï¼ŒåŽç»ä½¿ç”¨å…¶å®Œæˆè®¢é˜…åŠé€€è®¢çš„动作 let subscriber: commonEventManager.CommonEventSubscriber; // è®¢é˜…è€…ä¿¡æ¯ let subscribeInfo: commonEventManager.CommonEventSubscribeInfo = { events: ["event"] }; // 创建订阅者 try { subscriber = commonEventManager.createSubscriberSync(subscribeInfo); } catch (error) { let err: BusinessError = error as BusinessError; console.error(`createSubscriberSync failed, code is ${err.code}, message is ${err.message}`); } ``` ## commonEventManager.subscribe subscribe(subscriber: CommonEventSubscriber, callback: AsyncCallback\<CommonEventData>): void 订阅公共事件。使用callback异æ¥å›žè°ƒã€‚ **原å化æœåŠ¡API:** 从API version 11å¼€å§‹ï¼Œè¯¥æŽ¥å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力:** SystemCapability.Notification.CommonEvent **傿•°ï¼š** | 傿•°å | 类型 | å¿…å¡« | 说明 | | ---------- | ---------------------------------------------------- | ---- | -------------------------------- | | subscriber | [CommonEventSubscriber](./js-apis-inner-commonEvent-commonEventSubscriber.md) | 是 | 表示订阅者对象。 | | callback | AsyncCallback\<[CommonEventData](./js-apis-inner-commonEvent-commonEventData.md)> | 是 | 表示接收公共事件数æ®çš„回调函数。 | **错误ç :** 以下错误ç 的详细介ç»è¯·å‚è§[通用错误ç ](../errorcode-universal.md)å’Œ[事件错误ç ](./errorcode-CommonEventService.md)。 | 错误ç ID | é”™è¯¯ä¿¡æ¯ | | -------- | ----------------------------------- | | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. 3.Parameter verification failed. | | 801 | capability not supported. | | 1500007 | Failed to send the message to the common event service. | | 1500008 | Failed to initialize the common event service. | **示例:** ```ts import { BusinessError } from '@kit.BasicServicesKit'; // 定义订阅者,用于ä¿å˜åˆ›å»ºæˆåŠŸçš„è®¢é˜…è€…å¯¹è±¡ï¼ŒåŽç»ä½¿ç”¨å…¶å®Œæˆè®¢é˜…åŠé€€è®¢çš„动作 let subscriber:commonEventManager.CommonEventSubscriber; // è®¢é˜…è€…ä¿¡æ¯ let subscribeInfo:commonEventManager.CommonEventSubscribeInfo = { events: ["event"] }; // 订阅公共事件回调 function SubscribeCB(err: BusinessError, data:commonEventManager.CommonEventData) { if (err) { console.error(`subscribe failed, code is ${err.code}, message is ${err.message}`); } else { console.info("subscribe success, Consume callback " + JSON.stringify(data)); } } // 创建订阅者回调 function createCB(err: BusinessError, commonEventSubscriber:commonEventManager.CommonEventSubscriber) { if(!err) { console.info("createSubscriber success"); subscriber = commonEventSubscriber; // 订阅公共事件 try { commonEventManager.subscribe(subscriber, SubscribeCB); } catch (error) { let err: BusinessError = error as BusinessError; console.error(`subscribe failed, code is ${err.code}, message is ${err.message}`); } } else { console.error(`createSubscriber failed, code is ${err.code}, message is ${err.message}`); } } // 创建订阅者 try { commonEventManager.createSubscriber(subscribeInfo, createCB); } catch (error) { let err: BusinessError = error as BusinessError; console.error(`createSubscriber failed, code is ${err.code}, message is ${err.message}`); } ``` ## commonEventManager.unsubscribe unsubscribe(subscriber: CommonEventSubscriber, callback?: AsyncCallback\<void>): void å–æ¶ˆè®¢é˜…公共事件。使用callback异æ¥å›žè°ƒã€‚ **原å化æœåŠ¡API:** 从API version 11å¼€å§‹ï¼Œè¯¥æŽ¥å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力:** SystemCapability.Notification.CommonEvent **傿•°ï¼š** | 傿•°å | 类型 | å¿…å¡« | 说明 | | ---------- | ----------------------------------------------- | ---- | ------------------------ | | subscriber | [CommonEventSubscriber](./js-apis-inner-commonEvent-commonEventSubscriber.md) | 是 | 表示订阅者对象。 | | callback | AsyncCallback\<void> | å¦ | è¡¨ç¤ºå–æ¶ˆè®¢é˜…的回调方法。 | **错误ç :** 以下错误ç 的详细介ç»è¯·å‚è§[通用错误ç ](../errorcode-universal.md)å’Œ[事件错误ç ](./errorcode-CommonEventService.md)。 | 错误ç ID | é”™è¯¯ä¿¡æ¯ | | -------- | ----------------------------------- | | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. 3.Parameter verification failed. | | 801 | capability not supported. | | 1500007 | Failed to send the message to the common event service. | | 1500008 | Failed to initialize the common event service. | **示例:** ```ts import { BusinessError } from '@kit.BasicServicesKit'; // 定义订阅者,用于ä¿å˜åˆ›å»ºæˆåŠŸçš„è®¢é˜…è€…å¯¹è±¡ï¼ŒåŽç»ä½¿ç”¨å…¶å®Œæˆè®¢é˜…åŠé€€è®¢çš„动作 let subscriber:commonEventManager.CommonEventSubscriber; // è®¢é˜…è€…ä¿¡æ¯ let subscribeInfo:commonEventManager.CommonEventSubscribeInfo = { events: ["event"] }; // 订阅公共事件回调 function subscribeCB(err: BusinessError, data:commonEventManager.CommonEventData) { if (err) { console.error(`subscribe failed, code is ${err.code}, message is ${err.message}`); } else { console.info("subscribe success, Consume callback " + JSON.stringify(data)); } } // 创建订阅者回调 function createCB(err: BusinessError, commonEventSubscriber:commonEventManager.CommonEventSubscriber) { if (err) { console.error(`createSubscriber failed, code is ${err.code}, message is ${err.message}`); } else { console.info("createSubscriber success"); subscriber = commonEventSubscriber; // 订阅公共事件 try { commonEventManager.subscribe(subscriber, subscribeCB); } catch (error) { let err: BusinessError = error as BusinessError; console.error(`subscribe failed, code is ${err.code}, message is ${err.message}`); } } } // å–æ¶ˆè®¢é˜…公共事件回调 function unsubscribeCB(err: BusinessError) { if (err) { console.error(`unsubscribe failed, code is ${err.code}, message is ${err.message}`); } else { console.info("unsubscribe success"); } } // 创建订阅者 try { commonEventManager.createSubscriber(subscribeInfo, createCB); } catch (error) { let err: BusinessError = error as BusinessError; console.error(`createSubscriber failed, code is ${err.code}, message is ${err.message}`); } // å–æ¶ˆè®¢é˜…公共事件 // ç‰å¾…å¼‚æ¥æŽ¥å£subscribe执行完毕,开å‘è€…æ ¹æ®å®žé™…业务选择是å¦éœ€è¦æ·»åŠ setTimeout setTimeout(() => { try { commonEventManager.unsubscribe(subscriber, unsubscribeCB); } catch (error) { let err: BusinessError = error as BusinessError; console.error(`unsubscribe failed, code is ${err.code}, message is ${err.message}`); } }, 500); ```