• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# @ohos.commonEventManager (公共事件模块)
2
3本模块提供了公共事件的能力,包括公共事件的权限列表,发布公共事件,订阅或取消订阅公共事件,获取或修改公共事件结果代码、结果数据等。
4
5> **说明:**
6>
7> 本模块首批接口从API version 9开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
8
9## 导入模块
10
11```ts
12import CommonEventManager from '@ohos.commonEventManager';
13```
14
15## Support
16
17系统公共事件是指由系统服务或系统应用发布的事件,订阅这些系统公共事件需要特定的权限。发布或订阅这些事件需要使用如下链接中的枚举定义。
18
19全部系统公共事件枚举定义请参见[系统公共事件定义](./commonEventManager-definitions.md)。
20
21## CommonEventManager.publish
22
23publish(event: string, callback: AsyncCallback\<void>): void
24
25发布公共事件(callback形式)。
26
27**系统能力:** SystemCapability.Notification.CommonEvent
28
29**参数:**
30
31| 参数名     | 类型                 | 必填 | 说明                   |
32| -------- | -------------------- | ---- | ---------------------- |
33| event    | string               | 是   | 表示要发送的公共事件。 |
34| callback | AsyncCallback\<void> | 是   | 表示被指定的回调方法。 |
35
36**错误码:**
37以下错误码详细介绍请参考[@ohos.commonEventManager(事件)](../errorcodes/errorcode-CommonEventService.md)
38
39|错误码ID    |错误信息            |
40|-----------|--------------------|
41|1500004    |not System services or System app|
42|1500007    |message send error|
43|1500008    |CEMS error|
44|1500009    |system error|
45
46| 错误码ID | 错误信息                            |
47| -------- | ----------------------------------- |
48| 1500004  | not System services.                |
49| 1500007  | error sending message to Common Event Service. |
50| 1500008  | Common Event Service does not complete initialization. |
51| 1500009  | error obtaining system parameters.  |
52
53**示例:**
54
55```ts
56//发布公共事件回调
57function publishCallBack(err) {
58	if (err) {
59        console.error("publish failed " + JSON.stringify(err));
60    } else {
61        console.info("publish");
62    }
63}
64
65//发布公共事件
66try {
67    CommonEventManager.publish("event", publishCallBack);
68} catch(err) {
69    console.error('publish failed, catch error' + JSON.stringify(err));
70}
71```
72
73## CommonEventManager.publish
74
75publish(event: string, options: CommonEventPublishData, callback: AsyncCallback\<void>): void
76
77发布公共事件指定发布信息(callback形式)。
78
79**系统能力:** SystemCapability.Notification.CommonEvent
80
81**参数:**
82
83| 参数名     | 类型                   | 必填 | 说明                   |
84| -------- | ---------------------- | ---- | ---------------------- |
85| event    | string                 | 是   | 表示要发布的公共事件。  |
86| options  | [CommonEventPublishData](./js-apis-inner-commonEvent-commonEventPublishData.md) | 是   | 表示发布公共事件的属性。 |
87| callback | syncCallback\<void>   | 是   | 表示被指定的回调方法。  |
88
89**错误码:**
90|错误码ID    |错误信息            |
91|-----------|--------------------|
92|1500004    |not System services or System app|
93|1500007    |message send error|
94|1500008    |CEMS error|
95|1500009    |system error|
96
97
98| 错误码ID | 错误信息                            |
99| -------- | ----------------------------------- |
100| 1500004  | not System services.                |
101| 1500007  | error sending message to Common Event Service. |
102| 1500008  | Common Event Service does not complete initialization. |
103| 1500009  | error obtaining system parameters.  |
104
105**示例:**
106
107
108```ts
109//公共事件相关信息
110var options = {
111	code: 0,			 //公共事件的初始代码
112	data: "initial data",//公共事件的初始数据
113	isOrdered: true	 //有序公共事件
114}
115
116//发布公共事件回调
117function publishCallBack(err) {
118	if (err) {
119        console.error("publish failed " + JSON.stringify(err));
120    } else {
121        console.info("publish");
122    }
123}
124
125//发布公共事件
126try {
127    CommonEventManager.publish("event", options, publishCallBack);
128} catch (err) {
129    console.error('publish failed, catch error' + JSON.stringify(err));
130}
131```
132
133
134
135## CommonEventManager.publishAsUser<sup>
136
137publishAsUser(event: string, userId: number, callback: AsyncCallback\<void>): void
138
139向指定用户发布公共事件(callback形式)。
140
141**系统能力:** SystemCapability.Notification.CommonEvent
142
143**系统API**:此接口为系统接口,三方应用不支持调用。
144
145**参数:**
146
147| 参数名     | 类型                 | 必填 | 说明                               |
148| -------- | -------------------- | ---- | ---------------------------------- |
149| event    | string               | 是   | 表示要发送的公共事件。             |
150| userId   | number               | 是   | 表示指定向该用户ID发送此公共事件。 |
151| callback | AsyncCallback\<void> | 是   | 表示被指定的回调方法。             |
152
153**错误码:**
154|错误码ID    |错误信息            |
155|-----------|--------------------|
156|1500004    |not System services or System app|
157|1500007    |message send error|
158|1500008    |CEMS error|
159|1500009    |system error|
160
161| 错误码ID | 错误信息                            |
162| -------- | ----------------------------------- |
163| 1500004  | not System services.                |
164| 1500007  | error sending message to Common Event Service. |
165| 1500008  | Common Event Service does not complete initialization. |
166| 1500009  | error obtaining system parameters.  |
167
168**示例:**
169
170```ts
171//发布公共事件回调
172function publishAsUserCallBack(err) {
173	if (err) {
174        console.error("publishAsUser failed " + JSON.stringify(err));
175    } else {
176        console.info("publishAsUser");
177    }
178}
179
180//指定发送的用户
181var userId = 100;
182
183//发布公共事件
184try {
185    CommonEventManager.publishAsUser("event", userId, publishAsUserCallBack);
186} catch (err) {
187    console.error('publishAsUser failed, catch error' + JSON.stringify(err));
188}
189```
190
191
192
193## CommonEventManager.publishAsUser
194
195publishAsUser(event: string, userId: number, options: CommonEventPublishData, callback: AsyncCallback\<void>): void
196
197向指定用户发布公共事件并指定发布信息(callback形式)。
198
199**系统能力:** SystemCapability.Notification.CommonEvent
200
201**系统API**:此接口为系统接口,三方应用不支持调用。
202
203**参数:**
204
205| 参数名     | 类型                   | 必填 | 说明                   |
206| -------- | ---------------------- | ---- | ---------------------- |
207| event    | string                 | 是   | 表示要发布的公共事件。  |
208| userId   | number | 是 | 表示指定向该用户ID发送此公共事件。 |
209| options  | [CommonEventPublishData](./js-apis-inner-commonEvent-commonEventPublishData.md) | 是   | 表示发布公共事件的属性。 |
210| callback | AsyncCallback\<void>   | 是   | 表示被指定的回调方法。  |
211
212**错误码:**
213|错误码ID    |错误信息            |
214|-----------|--------------------|
215|1500004    |not System services or System app|
216|1500007    |message send error|
217|1500008    |CEMS error|
218|1500009    |system error|
219
220| 错误码ID | 错误信息                            |
221| -------- | ----------------------------------- |
222| 1500004  | not System services or System app.                |
223| 1500007  | error sending message to Common Event Service. |
224| 1500008  | Common Event Service does not complete initialization. |
225| 1500009  | error obtaining system parameters.  |
226
227**示例:**
228
229
230```ts
231//公共事件相关信息
232var options = {
233	code: 0,			 //公共事件的初始代码
234	data: "initial data",//公共事件的初始数据
235}
236
237//发布公共事件回调
238function publishAsUserCallBack(err) {
239	if (err) {
240        console.error("publishAsUser failed " + JSON.stringify(err));
241    } else {
242        console.info("publishAsUser");
243    }
244}
245
246//指定发送的用户
247var userId = 100;
248
249//发布公共事件
250try {
251    CommonEventManager.publishAsUser("event", userId, options, publishAsUserCallBack);
252} catch (err) {
253    console.error('publishAsUser failed, catch error' + JSON.stringify(err));
254}
255```
256
257
258
259## CommonEventManager.createSubscriber
260
261createSubscriber(subscribeInfo: CommonEventSubscribeInfo, callback: AsyncCallback\<CommonEventSubscriber>): void
262
263创建订阅者(callback形式)。
264
265**系统能力:** SystemCapability.Notification.CommonEvent
266
267**参数:**
268
269| 参数名          | 类型                                                         | 必填 | 说明                       |
270| ------------- | ------------------------------------------------------------ | ---- | -------------------------- |
271| subscribeInfo | [CommonEventSubscribeInfo](./js-apis-inner-commonEvent-commonEventSubscribeInfo.md)        | 是   | 表示订阅信息。             |
272| callback      | AsyncCallback\<[CommonEventSubscriber](./js-apis-inner-commonEvent-commonEventSubscriber.md)> | 是   | 表示创建订阅者的回调方法。 |
273
274**示例:**
275
276
277```ts
278var subscriber; //用于保存创建成功的订阅者对象,后续使用其完成订阅及退订的动作
279
280//订阅者信息
281var subscribeInfo = {
282    events: ["event"]
283};
284
285//创建订阅者回调
286function createSubscriberCallBack(err, commonEventSubscriber) {
287    if(!err) {
288        console.info("createSubscriber");
289        subscriber = commonEventSubscriber;
290    } else {
291        console.error("createSubscriber failed " + JSON.stringify(err));
292    }
293}
294
295//创建订阅者
296try {
297    CommonEventManager.createSubscriber(subscribeInfo, createSubscriberCallBack);
298} catch (err) {
299    console.error('createSubscriber failed, catch error' + JSON.stringify(err));
300}
301```
302
303
304
305## CommonEventManager.createSubscriber
306
307createSubscriber(subscribeInfo: CommonEventSubscribeInfo): Promise\<CommonEventSubscriber>
308
309创建订阅者(Promise形式)。
310
311**系统能力:** SystemCapability.Notification.CommonEvent
312
313**参数:**
314
315| 参数名          | 类型                                                  | 必填 | 说明           |
316| ------------- | ----------------------------------------------------- | ---- | -------------- |
317| subscribeInfo | [CommonEventSubscribeInfo](./js-apis-inner-commonEvent-commonEventSubscribeInfo.md) | 是   | 表示订阅信息。 |
318
319**返回值:**
320| 类型                                                      | 说明             |
321| --------------------------------------------------------- | ---------------- |
322| Promise\<[CommonEventSubscriber](./js-apis-inner-commonEvent-commonEventSubscriber.md)> | 返回订阅者对象。 |
323
324**示例:**
325
326```ts
327var subscriber; //用于保存创建成功的订阅者对象,后续使用其完成订阅及退订的动作
328
329//订阅者信息
330var subscribeInfo = {
331	events: ["event"]
332};
333
334//创建订阅者
335try {
336    CommonEventManager.createSubscriber(subscribeInfo).then((commonEventSubscriber) => {
337    console.info("createSubscriber");
338    subscriber = commonEventSubscriber;
339}).catch((err) => {
340    console.error("createSubscriber failed " + JSON.stringify(err));
341});
342} catch(err) {
343    console.error('createSubscriber failed, catch error' + JSON.stringify(err));
344}
345
346```
347
348
349
350## CommonEventManager.subscribe
351
352subscribe(subscriber: CommonEventSubscriber, callback: AsyncCallback\<CommonEventData>): void
353
354订阅公共事件(callback形式)。
355
356**系统能力:** SystemCapability.Notification.CommonEvent
357
358**参数:**
359
360| 参数名       | 类型                                                | 必填 | 说明                             |
361| ---------- | ---------------------------------------------------- | ---- | -------------------------------- |
362| subscriber | [CommonEventSubscriber](./js-apis-inner-commonEvent-commonEventSubscriber.md)     | 是   | 表示订阅者对象。                 |
363| callback   | AsyncCallback\<[CommonEventData](./js-apis-inner-commonEvent-commonEventData.md)> | 是   | 表示接收公共事件数据的回调函数。 |
364
365**错误码:**
366
367错误码介绍请参考[@ohos.commonEventManager(事件)](../errorcodes/errorcode-CommonEventService.md)
368
369| 错误码ID | 错误信息                            |
370| -------- | ----------------------------------- |
371| 801  | capability not supported.               |
372| 1500007  | error sending message to Common Event Service. |
373| 1500008  | Common Event Service does not complete initialization. |
374
375**示例:**
376
377```ts
378//订阅者信息
379var subscriber; //用于保存创建成功的订阅者对象,后续使用其完成订阅及退订的动作
380
381//订阅者信息
382var subscribeInfo = {
383    events: ["event"]
384};
385
386//订阅公共事件回调
387function SubscribeCallBack(err, data) {
388    if (err) {
389        console.error("subscribe failed " + JSON.stringify(err));
390    } else {
391        console.info("subscribe ");
392    }
393}
394
395//创建订阅者回调
396function createSubscriberCallBack(err, commonEventSubscriber) {
397    if(!err) {
398        console.info("createSubscriber");
399        subscriber = commonEventSubscriber;
400        //订阅公共事件
401        try {
402            CommonEventManager.subscribe(subscriber, SubscribeCallBack);
403        } catch (err) {
404            console.error("createSubscriber failed " + JSON.stringify(err));
405        }
406    } else {
407        console.error("createSubscriber failed " + JSON.stringify(err));
408    }
409}
410
411//创建订阅者
412try {
413    CommonEventManager.createSubscriber(subscribeInfo, createSubscriberCallBack);
414} catch (err) {
415    console.error('createSubscriber failed, catch error' + JSON.stringify(err));
416}
417```
418
419
420
421## CommonEventManager.unsubscribe
422
423unsubscribe(subscriber: CommonEventSubscriber, callback?: AsyncCallback\<void>): void
424
425取消订阅公共事件(callback形式)。
426
427**系统能力:** SystemCapability.Notification.CommonEvent
428
429**参数:**
430
431| 参数名       | 类型                                             | 必填 | 说明                     |
432| ---------- | ----------------------------------------------- | ---- | ------------------------ |
433| subscriber | [CommonEventSubscriber](./js-apis-inner-commonEvent-commonEventSubscriber.md) | 是   | 表示订阅者对象。         |
434| callback   | AsyncCallback\<void>                            | 否   | 表示取消订阅的回调方法。 |
435
436**错误码:**
437
438错误码介绍请参考[@ohos.commonEventManager(事件)](../errorcodes/errorcode-CommonEventService.md)
439
440| 错误码ID | 错误信息                            |
441| -------- | ----------------------------------- |
442| 801  | capability not supported.               |
443| 1500007  | error sending message to Common Event Service. |
444| 1500008  | Common Event Service does not complete initialization. |
445
446**示例:**
447
448```ts
449var subscriber; //用于保存创建成功的订阅者对象,后续使用其完成订阅及退订的动作
450//订阅者信息
451var subscribeInfo = {
452    events: ["event"]
453};
454//订阅公共事件回调
455function subscribeCallBack(err, data) {
456    if (err) {
457        console.info("subscribe failed " + JSON.stringify(err));
458    } else {
459        console.info("subscribe");
460    }
461}
462//创建订阅者回调
463function createSubscriberCallBack(err, commonEventSubscriber) {
464    if (err) {
465        console.info("createSubscriber failed " + JSON.stringify(err));
466    } else {
467        console.info("createSubscriber");
468        subscriber = commonEventSubscriber;
469        //订阅公共事件
470        try {
471            CommonEventManager.subscribe(subscriber, subscribeCallBack);
472        } catch(err) {
473            console.info("subscribe failed " + JSON.stringify(err));
474        }
475    }
476}
477//取消订阅公共事件回调
478function unsubscribeCallBack(err) {
479    if (err) {
480        console.info("unsubscribe failed " + JSON.stringify(err));
481    } else {
482        console.info("unsubscribe");
483    }
484}
485//创建订阅者
486try {
487    CommonEventManager.createSubscriber(subscribeInfo, createSubscriberCallBack);
488} catch (err) {
489    console.info("createSubscriber failed " + JSON.stringify(err));
490}
491
492//取消订阅公共事件
493try {
494    CommonEventManager.unsubscribe(subscriber, unsubscribeCallBack);
495} catch (err) {
496    console.info("unsubscribe failed " + JSON.stringify(err));
497}
498```
499
500## CommonEventData
501
502**系统能力:** 以下各项对应的系统能力均为SystemCapability.Notification.CommonEvent
503
504| 名称       | 类型                 | 可读 | 可写 | 说明                                                    |
505| ---------- |-------------------- | ---- | ---- |  ------------------------------------------------------- |
506| event      | string               | 是  | 否  | 表示当前接收的公共事件名称。                              |
507| bundleName | string               | 是  | 否  | 表示包名称。                                              |
508| code       | number               | 是  | 否  | 表示公共事件的结果代码,用于传递int类型的数据。           |
509| data       | string               | 是  | 否  | 表示公共事件的自定义结果数据,用于传递string类型的数据。 |
510| parameters | {[key: string]: any} | 是  | 否  | 表示公共事件的附加信息。                                  |
511
512
513## CommonEventPublishData
514
515**系统能力:** 以下各项对应的系统能力均为SystemCapability.Notification.CommonEvent
516
517| 名称                  | 类型                 | 可读 | 可写 | 说明                         |
518| --------------------- | -------------------- | ---- | ---- | ---------------------------- |
519| bundleName            | string               | 是  | 否  | 表示包名称。                   |
520| code                  | number               | 是  | 否  | 表示公共事件的结果代码。       |
521| data                  | string               | 是  | 否  | 表示公共事件的自定义结果数据。 |
522| subscriberPermissions | Array\<string>       | 是  | 否  | 表示订阅者的权限。             |
523| isOrdered             | boolean              | 是  | 否  | 表示是否是有序事件。           |
524| isSticky              | boolean              | 是  | 否  | 表示是否是粘性事件。仅系统应用或系统服务允许发送粘性事件。 |
525| parameters            | {[key: string]: any} | 是  | 否  | 表示公共事件的附加信息。       |
526
527## CommonEventSubscribeInfo
528
529**系统能力:** 以下各项对应的系统能力均为SystemCapability.Notification.CommonEvent
530
531| 名称                | 类型           | 可读 | 可写 | 说明                                                         |
532| ------------------- | -------------- | ---- | ---- | ------------------------------------------------------------ |
533| events              | Array\<string> | 是  | 否  | 表示要发送的公共事件。                                         |
534| publisherPermission | string         | 是  | 否  | 表示发布者的权限。                                             |
535| publisherDeviceId   | string         | 是  | 否  | 表示设备ID,该值必须是同一ohos网络上的现有设备ID。             |
536| userId              | number         | 是  | 否  | 表示用户ID。此参数是可选的,默认值当前用户的ID。如果指定了此参数,则该值必须是系统中现有的用户ID。 |
537| priority            | number         | 是  | 否  | 表示订阅者的优先级。值的范围是-100到1000。                     |
538