1# @ohos.commonEvent (公共事件模块)(系统应用)
2
3本模块提供了公共事件的能力,包括公共事件的权限列表,发布公共事件,订阅或取消订阅公共事件,获取或修改公共事件结果代码、结果数据等。
4
5> **说明:**
6> 从API Version 9开始,该接口不再维护,推荐使用新接口[@ohos.commonEventManager](js-apis-commonEventManager.md)。
7>
8> 本模块首批接口从API version 7开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
9>
10> 当前界面仅包含本模块的系统接口,其他公开接口参见[CommonEvent](./js-apis-commonEvent.md)。
11
12## 导入模块
13
14```ts
15import commonEvent from '@ohos.commonEvent';
16```
17
18## Support
19
20系统公共事件是指由系统服务或系统应用发布的事件,订阅这些系统公共事件需要特定的权限。发布或订阅这些事件需要使用如下链接中的枚举定义。
21
22全部系统公共事件枚举定义请参见[系统公共事件定义](./common_event/commonEvent-definitions.md)。
23
24## commonEvent.publishAsUser<sup>(deprecated)</sup>
25
26publishAsUser(event: string, userId: number, callback: AsyncCallback\<void>): void
27
28以回调的形式向指定用户发布公共事件。
29
30> **说明:**
31> 从 API version 8开始支持,从API version 9开始废弃。建议使用[commonEventManager.publishAsUser](js-apis-commonEventManager-sys.md#commoneventmanagerpublishasuser)替代。
32
33**系统能力:** `SystemCapability.Notification.CommonEvent`
34
35**系统API**:此接口为系统接口,三方应用不支持调用。
36
37**参数:**
38
39| 参数名     | 类型                 | 必填 | 说明                               |
40| -------- | -------------------- | ---- | ---------------------------------- |
41| event    | string               | 是   | 表示要发送的公共事件。             |
42| userId   | number               | 是   | 表示指定向该用户ID发送此公共事件。 |
43| callback | AsyncCallback\<void> | 是   | 表示被指定的回调方法。             |
44
45**示例:**
46
47```ts
48import Base from '@ohos.base';
49
50// 发布公共事件回调
51function publishCB(err:Base.BusinessError) {
52	if (err.code) {
53        console.error(`publishAsUser failed, code is ${err.code}`);
54    } else {
55        console.info("publishAsUser");
56    }
57}
58
59// 指定发送的用户
60let userId = 100;
61
62// 发布公共事件
63commonEvent.publishAsUser("event", userId, publishCB);
64```
65
66## commonEvent.publishAsUser<sup>(deprecated)</sup>
67
68publishAsUser(event: string, userId: number, options: CommonEventPublishData, callback: AsyncCallback\<void>): void
69
70以回调形式向指定用户发布公共事件并指定发布信息。
71
72> **说明:**
73> 从 API version 8开始支持,从API version 9开始废弃。建议使用[commonEventManager.publishAsUser](js-apis-commonEventManager-sys.md#commoneventmanagerpublishasuser-1)替代。
74
75**系统能力:** `SystemCapability.Notification.CommonEvent`
76
77**系统API**:此接口为系统接口,三方应用不支持调用。
78
79**参数:**
80
81| 参数名     | 类型                   | 必填 | 说明                   |
82| -------- | ---------------------- | ---- | ---------------------- |
83| event    | string                 | 是   | 表示要发布的公共事件。  |
84| userId   | number | 是 | 表示指定向该用户ID发送此公共事件。 |
85| options  | [CommonEventPublishData](./js-apis-inner-commonEvent-commonEventPublishData.md) | 是   | 表示发布公共事件的属性。 |
86| callback | AsyncCallback\<void>   | 是   | 表示被指定的回调方法。  |
87
88**示例:**
89
90
91```ts
92import Base from '@ohos.base';
93import CommonEventManager from '@ohos.commonEventManager';
94
95// 公共事件相关信息
96let options:CommonEventManager.CommonEventPublishData = {
97	code: 0,			 // 公共事件的初始代码
98	data: "initial data",// 公共事件的初始数据
99}
100
101// 发布公共事件回调
102function publishCB(err:Base.BusinessError) {
103    if (err.code) {
104        console.error(`publishAsUser failed, code is ${err.code}`);
105    } else {
106        console.info("publishAsUser");
107    }
108}
109
110// 指定发送的用户
111let userId = 100;
112
113// 发布公共事件
114commonEvent.publishAsUser("event", userId, options, publishCB);
115```
116
117
118unsubscribe(subscriber: CommonEventSubscriber, callback?: AsyncCallback\<void>): void
119
120以回调形式取消订阅公共事件。
121
122> **说明:**
123>从 API version 7开始支持,从API version 9开始废弃。建议使用[commonEventManager.subscribe](js-apis-commonEventManager.md#commoneventmanagerunsubscribe)替代。
124
125**系统能力:** `SystemCapability.Notification.CommonEvent`
126
127**参数:**
128
129| 参数名       | 类型                                             | 必填 | 说明                     |
130| ---------- | ----------------------------------------------- | ---- | ------------------------ |
131| subscriber | [CommonEventSubscriber](./js-apis-inner-commonEvent-commonEventSubscriber.md) | 是   | 表示订阅者对象。         |
132| callback   | AsyncCallback\<void>                            | 否   | 表示取消订阅的回调方法。 |
133
134**示例:**
135
136```ts
137import Base from '@ohos.base';
138import CommonEventManager from '@ohos.commonEventManager';
139
140let subscriber:CommonEventManager.CommonEventSubscriber;	// 用于保存创建成功的订阅者对象,后续使用其完成订阅及退订的动作
141
142// 订阅者信息
143let subscribeInfo:CommonEventManager.CommonEventSubscribeInfo = {
144    events: ["event"]
145};
146
147// 订阅公共事件回调
148function subscribeCB(err:Base.BusinessError, data:CommonEventManager.CommonEventData) {
149    if (err.code) {
150        console.error(`subscribe failed, code is ${err.code}`);
151    } else {
152        console.info("subscribe " + JSON.stringify(data));
153    }
154}
155
156// 创建订阅者回调
157function createCB(err:Base.BusinessError, commonEventSubscriber:CommonEventManager.CommonEventSubscriber) {
158    if (err.code) {
159        console.error(`createSubscriber failed, code is ${err.code}`);
160    } else {
161        console.info("createSubscriber");
162        subscriber = commonEventSubscriber;
163        // Subscribe to a common event.
164        commonEvent.subscribe(subscriber, subscribeCB);
165    }
166}
167
168// 取消订阅公共事件回调
169function unsubscribeCB(err:Base.BusinessError) {
170    if (err.code) {
171        console.error(`unsubscribe failed, code is ${err.code}`);
172    } else {
173        console.info("unsubscribe");
174    }
175}
176
177// 创建订阅者
178commonEvent.createSubscriber(subscribeInfo, createCB);
179
180// 取消订阅公共事件
181commonEvent.unsubscribe(subscriber, unsubscribeCB);
182```