js-apis-commonEvent.md 13.4 KB
Newer Older
1
# @ohos.commonEvent (公共事件模块)
X
xuchenghua09 已提交
2

Z
zengyawen 已提交
3
本模块提供了公共事件的能力,包括公共事件的权限列表,发布公共事件,订阅或取消订阅公共事件,获取或修改公共事件结果代码、结果数据等。
4 5

> **说明:**
Z
zengyawen 已提交
6
> - 从API Version 9开始,该接口不再维护,推荐使用新接口[@ohos.commonEventManager](js-apis-commonEventManager.md)。
L
Leon 已提交
7
>
Z
zengyawen 已提交
8
> - 本模块首批接口从API version 7开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
X
xuchenghua09 已提交
9 10 11

## 导入模块

L
Leon 已提交
12
```ts
Z
zengsiyu 已提交
13
import CommonEvent from '@ohos.commonEvent';
X
xuchenghua09 已提交
14 15
```

X
xuzhihao 已提交
16 17
## Support

L
Leon 已提交
18
系统公共事件是指由系统服务或系统应用发布的事件,订阅这些系统公共事件需要特定的权限。发布或订阅这些事件需要使用如下链接中的枚举定义。
X
xuzhihao 已提交
19

L
Leon 已提交
20
全部系统公共事件枚举定义请参见[系统公共事件定义](./commonEvent-definitions.md)
X
xuzhihao 已提交
21

22
## CommonEvent.publish<sup>(deprecated)</sup>
X
xuchenghua09 已提交
23

24
publish(event: string, callback: AsyncCallback\<void>): void
X
xuchenghua09 已提交
25

L
Leon 已提交
26
发布公共事件(回调形式)。
X
xuchenghua09 已提交
27

28 29 30
> **说明:**
> 从 API version 7开始支持,从API version 9开始废弃。建议使用[commonEventManager.publish](js-apis-commonEventManager.md#commoneventmanagerpublish)替代。

L
Leon 已提交
31
**系统能力:** `SystemCapability.Notification.CommonEvent`
Z
zengsiyu 已提交
32

Z
zengyawen 已提交
33
**参数:**
X
xuchenghua09 已提交
34

35
| 名称     | 类型                 | 必填 | 说明                   |
X
xuzhihao 已提交
36 37 38
| -------- | -------------------- | ---- | ---------------------- |
| event    | string               | 是   | 表示要发送的公共事件。 |
| callback | AsyncCallback\<void> | 是   | 表示被指定的回调方法。 |
X
xuchenghua09 已提交
39

Z
zengyawen 已提交
40
**示例:**
X
xuchenghua09 已提交
41

L
Leon 已提交
42
```ts
X
xuchenghua09 已提交
43
//发布公共事件回调
L
Leon 已提交
44
function publishCB(err) {
Z
zengsiyu 已提交
45
	if (err.code) {
46
        console.error(`publish failed, code is ${err.code}`);
Z
zengsiyu 已提交
47 48 49
    } else {
        console.info("publish");
    }
X
xuchenghua09 已提交
50
}
Z
zengsiyu 已提交
51

X
xuchenghua09 已提交
52
//发布公共事件
L
Leon 已提交
53
CommonEvent.publish("event", publishCB);
X
xuchenghua09 已提交
54 55
```

56
## CommonEvent.publish<sup>(deprecated)</sup>
X
xuchenghua09 已提交
57

58
publish(event: string, options: CommonEventPublishData, callback: AsyncCallback\<void>): void
X
xuchenghua09 已提交
59

L
Leon 已提交
60
以回调的形式发布公共事件。
X
xuchenghua09 已提交
61

62 63 64
> **说明:**
> 从 API version 7开始支持,从API version 9开始废弃。建议使用[commonEventManager.publish](js-apis-commonEventManager.md#commoneventmanagerpublish-1)替代。

L
Leon 已提交
65
**系统能力:** `SystemCapability.Notification.CommonEvent`
Z
zengsiyu 已提交
66

Z
zengyawen 已提交
67
**参数:**
X
xuchenghua09 已提交
68

69
| 名称     | 类型                   | 必填 | 说明                   |
X
xuzhihao 已提交
70 71
| -------- | ---------------------- | ---- | ---------------------- |
| event    | string                 | 是   | 表示要发布的公共事件。  |
Z
zhuhan 已提交
72
| options  | [CommonEventPublishData](./js-apis-inner-commonEvent-commonEventPublishData.md) | 是   | 表示发布公共事件的属性。 |
73
| callback | AsyncCallback\<void>   | 是   | 表示被指定的回调方法。  |
X
xuchenghua09 已提交
74

Z
zengyawen 已提交
75
**示例:**
X
xuchenghua09 已提交
76 77


L
Leon 已提交
78
```ts
X
xuchenghua09 已提交
79
//公共事件相关信息
F
fangJinliang1 已提交
80
let options = {
81 82 83
	code: 0,			 //公共事件的初始代码
	data: "initial data",//公共事件的初始数据
	isOrdered: true	 //有序公共事件
X
xuchenghua09 已提交
84
}
Z
zengsiyu 已提交
85

X
xuchenghua09 已提交
86
//发布公共事件回调
L
Leon 已提交
87
function publishCB(err) {
Z
zengsiyu 已提交
88
	if (err.code) {
89
        console.error(`publish failed, code is ${err.code}`);
Z
zengsiyu 已提交
90 91 92
    } else {
        console.info("publish");
    }
X
xuchenghua09 已提交
93
}
Z
zengsiyu 已提交
94

X
xuchenghua09 已提交
95
//发布公共事件
L
Leon 已提交
96
CommonEvent.publish("event", options, publishCB);
X
xuchenghua09 已提交
97 98
```

99
## CommonEvent.publishAsUser<sup>(deprecated)</sup>
Z
zengsiyu 已提交
100

101
publishAsUser(event: string, userId: number, callback: AsyncCallback\<void>): void
Z
zengsiyu 已提交
102

L
Leon 已提交
103
以回调的形式向指定用户发布公共事件。
Z
zengsiyu 已提交
104

105 106 107
> **说明:**
> 从 API version 8开始支持,从API version 9开始废弃。建议使用[commonEventManager.publishAsUser](js-apis-commonEventManager.md#commoneventmanagerpublishasuser)替代。

L
Leon 已提交
108
**系统能力:** `SystemCapability.Notification.CommonEvent`
Z
zengsiyu 已提交
109

110 111
**系统API**:此接口为系统接口,三方应用不支持调用。

Z
zengsiyu 已提交
112 113
**参数:**

114
| 名称     | 类型                 | 必填 | 说明                               |
X
xuzhihao 已提交
115 116 117 118
| -------- | -------------------- | ---- | ---------------------------------- |
| event    | string               | 是   | 表示要发送的公共事件。             |
| userId   | number               | 是   | 表示指定向该用户ID发送此公共事件。 |
| callback | AsyncCallback\<void> | 是   | 表示被指定的回调方法。             |
Z
zengsiyu 已提交
119 120 121

**示例:**

L
Leon 已提交
122
```ts
123
// 发布公共事件回调
L
Leon 已提交
124
function publishCB(err) {
Z
zengsiyu 已提交
125
	if (err.code) {
126
        console.error(`publishAsUser failed, code is ${err.code}`);
Z
zengsiyu 已提交
127 128 129 130
    } else {
        console.info("publishAsUser");
    }
}
Z
zengsiyu 已提交
131

132
// 指定发送的用户
F
fangJinliang1 已提交
133
let userId = 100;
Z
zengsiyu 已提交
134

135
// 发布公共事件
L
Leon 已提交
136
CommonEvent.publishAsUser("event", userId, publishCB);
Z
zengsiyu 已提交
137 138
```

139
## CommonEvent.publishAsUser<sup>(deprecated)</sup>
Z
zengsiyu 已提交
140

141
publishAsUser(event: string, userId: number, options: CommonEventPublishData, callback: AsyncCallback\<void>): void
Z
zengsiyu 已提交
142

L
Leon 已提交
143
以回调形式向指定用户发布公共事件并指定发布信息。
Z
zengsiyu 已提交
144

145 146 147
> **说明:**
> 从 API version 8开始支持,从API version 9开始废弃。建议使用[commonEventManager.publishAsUser](js-apis-commonEventManager.md#commoneventmanagerpublishasuser-1)替代。

L
Leon 已提交
148
**系统能力:** `SystemCapability.Notification.CommonEvent`
Z
zengsiyu 已提交
149

150 151
**系统API**:此接口为系统接口,三方应用不支持调用。

Z
zengsiyu 已提交
152 153
**参数:**

154
| 名称     | 类型                   | 必填 | 说明                   |
X
xuzhihao 已提交
155 156 157
| -------- | ---------------------- | ---- | ---------------------- |
| event    | string                 | 是   | 表示要发布的公共事件。  |
| userId   | number | 是 | 表示指定向该用户ID发送此公共事件。 |
Z
zhuhan 已提交
158
| options  | [CommonEventPublishData](./js-apis-inner-commonEvent-commonEventPublishData.md) | 是   | 表示发布公共事件的属性。 |
X
xuzhihao 已提交
159
| callback | AsyncCallback\<void>   | 是   | 表示被指定的回调方法。  |
Z
zengsiyu 已提交
160 161 162 163

**示例:**


L
Leon 已提交
164
```ts
165
// 公共事件相关信息
F
fangJinliang1 已提交
166
let options = {
167 168
	code: 0,			 // 公共事件的初始代码
	data: "initial data",// 公共事件的初始数据
Z
zengsiyu 已提交
169
}
Z
zengsiyu 已提交
170

171
// 发布公共事件回调
L
Leon 已提交
172
function publishCB(err) {
Z
zengsiyu 已提交
173
	if (err.code) {
174
        console.error(`publishAsUser failed, code is ${err.code}`);
Z
zengsiyu 已提交
175 176 177 178
    } else {
        console.info("publishAsUser");
    }
}
Z
zengsiyu 已提交
179

180
// 指定发送的用户
F
fangJinliang1 已提交
181
let userId = 100;
Z
zengsiyu 已提交
182

183
// 发布公共事件
L
Leon 已提交
184
CommonEvent.publishAsUser("event", userId, options, publishCB);
Z
zengsiyu 已提交
185 186
```

187
## CommonEvent.createSubscriber<sup>(deprecated)</sup>
X
xuchenghua09 已提交
188

L
Leon 已提交
189
createSubscriber(subscribeInfo: CommonEventSubscribeInfo, callback: AsyncCallback<CommonEventSubscriber>): void
X
xuchenghua09 已提交
190

L
Leon 已提交
191
以回调形式创建订阅者。
X
xuchenghua09 已提交
192

193 194 195
> **说明:** 
>从 API version 7开始支持,从API version 9开始废弃。建议使用[commonEventManager.createSubscriber](js-apis-commonEventManager.md#commoneventmanagercreatesubscriber)替代。

L
Leon 已提交
196
**系统能力:** `SystemCapability.Notification.CommonEvent`
Z
zengsiyu 已提交
197

Z
zengyawen 已提交
198
**参数:**
X
xuchenghua09 已提交
199

200
| 名称          | 类型                                                         | 必填 | 说明                       |
X
xuzhihao 已提交
201
| ------------- | ------------------------------------------------------------ | ---- | -------------------------- |
Z
zhuhan 已提交
202 203
| subscribeInfo | [CommonEventSubscribeInfo](./js-apis-inner-commonEvent-commonEventSubscribeInfo.md)        | 是   | 表示订阅信息。             |
| callback      | AsyncCallback\<[CommonEventSubscriber](./js-apis-inner-commonEvent-commonEventSubscriber.md)> | 是   | 表示创建订阅者的回调方法。 |
X
xuchenghua09 已提交
204

Z
zengyawen 已提交
205
**示例:**
X
xuchenghua09 已提交
206 207


L
Leon 已提交
208
```ts
209
let subscriber; // 用于保存创建成功的订阅者对象,后续使用其完成订阅及退订的动作
Z
zengsiyu 已提交
210

211
// 订阅者信息
F
fangJinliang1 已提交
212
let subscribeInfo = {
X
xuchenghua09 已提交
213 214
	events: ["event"]
};
Z
zengsiyu 已提交
215

216
// 创建订阅者回调
L
Leon 已提交
217
function createCB(err, commonEventSubscriber) {
Z
zengsiyu 已提交
218
    if (err.code) {
219
        console.error(`createSubscriber failed, code is ${err.code}`);
Z
zengsiyu 已提交
220 221 222 223
    } else {
        console.info("createSubscriber");
        subscriber = commonEventSubscriber;
    }
X
xuchenghua09 已提交
224
}
Z
zengsiyu 已提交
225

226
// 创建订阅者
L
Leon 已提交
227
CommonEvent.createSubscriber(subscribeInfo, createCB);
X
xuchenghua09 已提交
228 229
```

230
## CommonEvent.createSubscriber<sup>(deprecated)</sup>
X
xuchenghua09 已提交
231

L
Leon 已提交
232
createSubscriber(subscribeInfo: CommonEventSubscribeInfo): Promise<CommonEventSubscriber>
X
xuchenghua09 已提交
233

L
Leon 已提交
234
以Promise形式创建订阅者。
X
xuchenghua09 已提交
235

236 237 238
> **说明:** 
>从 API version 7开始支持,从API version 9开始废弃。建议使用[commonEventManager.createSubscriber](js-apis-commonEventManager.md#commoneventmanagercreatesubscriber-1)替代。

L
Leon 已提交
239
**系统能力:** `SystemCapability.Notification.CommonEvent`
Z
zengsiyu 已提交
240

Z
zengyawen 已提交
241
**参数:**
X
xuchenghua09 已提交
242

243
| 名称          | 类型                                                  | 必填 | 说明           |
X
xuzhihao 已提交
244
| ------------- | ----------------------------------------------------- | ---- | -------------- |
Z
zhuhan 已提交
245
| subscribeInfo | [CommonEventSubscribeInfo](./js-apis-inner-commonEvent-commonEventSubscribeInfo.md) | 是   | 表示订阅信息。 |
X
xuchenghua09 已提交
246

Z
zengyawen 已提交
247 248 249
**返回值:**
| 类型                                                      | 说明             |
| --------------------------------------------------------- | ---------------- |
Z
zhuhan 已提交
250
| Promise\<[CommonEventSubscriber](./js-apis-inner-commonEvent-commonEventSubscriber.md)> | 返回订阅者对象。 |
X
xuchenghua09 已提交
251

Z
zengyawen 已提交
252
**示例:**
X
xuchenghua09 已提交
253

L
Leon 已提交
254
```ts
255
let subscriber; // 用于保存创建成功的订阅者对象,后续使用其完成订阅及退订的动作
Z
zengsiyu 已提交
256

257
// 订阅者信息
F
fangJinliang1 已提交
258
let subscribeInfo = {
X
xuchenghua09 已提交
259 260
	events: ["event"]
};
Z
zengsiyu 已提交
261

262
// 创建订阅者
Z
zengsiyu 已提交
263 264 265 266
CommonEvent.createSubscriber(subscribeInfo).then((commonEventSubscriber) => {
    console.info("createSubscriber");
    subscriber = commonEventSubscriber;
}).catch((err) => {
267
    console.error(`createSubscriber failed, code is ${err.code}`);
X
xuchenghua09 已提交
268 269 270
});
```

271
## CommonEvent.subscribe<sup>(deprecated)</sup>
X
xuchenghua09 已提交
272

L
Leon 已提交
273
subscribe(subscriber: CommonEventSubscriber, callback: AsyncCallback<CommonEventData>): void
X
xuchenghua09 已提交
274

L
Leon 已提交
275
以回调形式订阅公共事件。
X
xuchenghua09 已提交
276

277 278 279
> **说明:** 
>从 API version 7开始支持,从API version 9开始废弃。建议使用[commonEventManager.subscribe](js-apis-commonEventManager.md#commoneventmanagersubscribe)替代。

L
Leon 已提交
280
**系统能力:** `SystemCapability.Notification.CommonEvent`
Z
zengsiyu 已提交
281

Z
zengyawen 已提交
282
**参数:**
X
xuchenghua09 已提交
283

284
| 名称       | 类型                                                | 必填 | 说明                             |
X
xuzhihao 已提交
285
| ---------- | ---------------------------------------------------- | ---- | -------------------------------- |
Z
zhuhan 已提交
286 287
| subscriber | [CommonEventSubscriber](./js-apis-inner-commonEvent-commonEventSubscriber.md)     | 是   | 表示订阅者对象。                 |
| callback   | AsyncCallback\<[CommonEventData](./js-apis-inner-commonEvent-commonEventData.md)> | 是   | 表示接收公共事件数据的回调函数。 |
X
xuchenghua09 已提交
288

Z
zengyawen 已提交
289
**示例:**
X
xuchenghua09 已提交
290

L
Leon 已提交
291
```ts
292
let subscriber; // 用于保存创建成功的订阅者对象,后续使用其完成订阅及退订的动作
Z
zengsiyu 已提交
293

294
// 订阅者信息
F
fangJinliang1 已提交
295
let subscribeInfo = {
X
xuchenghua09 已提交
296 297 298
    events: ["event"]
};

299
// 订阅公共事件回调
L
Leon 已提交
300
function subscribeCB(err, data) {
Z
zengsiyu 已提交
301
    if (err.code) {
302
        console.error(`subscribe failed, code is ${err.code}`);
Z
zengsiyu 已提交
303 304 305
    } else {
        console.info("subscribe " + JSON.stringify(data));
    }
X
xuchenghua09 已提交
306 307
}

308
// 创建订阅者回调
X
xuzhihao 已提交
309
function createCB(err, commonEventSubscriber) {
Z
zengsiyu 已提交
310
    if (err.code) {
311
        console.error(`createSubscriber failed, code is ${err.code}`);
Z
zengsiyu 已提交
312 313
    } else {
        console.info("createSubscriber");
X
xuzhihao 已提交
314
        subscriber = commonEventSubscriber;
315
        // 订阅公共事件
L
Leon 已提交
316
        CommonEvent.subscribe(subscriber, subscribeCB);
Z
zengsiyu 已提交
317
    }
X
xuchenghua09 已提交
318 319
}

320
// 创建订阅者
L
Leon 已提交
321
CommonEvent.createSubscriber(subscribeInfo, createCB);
X
xuchenghua09 已提交
322 323
```

324
## CommonEvent.unsubscribe<sup>(deprecated)</sup>
X
xuchenghua09 已提交
325

326
unsubscribe(subscriber: CommonEventSubscriber, callback?: AsyncCallback\<void>): void
X
xuchenghua09 已提交
327

L
Leon 已提交
328
以回调形式取消订阅公共事件。
X
xuchenghua09 已提交
329

330 331 332
> **说明:** 
>从 API version 7开始支持,从API version 9开始废弃。建议使用[commonEventManager.subscribe](js-apis-commonEventManager.md#commoneventmanagerunsubscribe)替代。

L
Leon 已提交
333
**系统能力:** `SystemCapability.Notification.CommonEvent`
Z
zengsiyu 已提交
334

Z
zengyawen 已提交
335
**参数:**
X
xuchenghua09 已提交
336

337
| 名称       | 类型                                             | 必填 | 说明                     |
X
xuzhihao 已提交
338
| ---------- | ----------------------------------------------- | ---- | ------------------------ |
Z
zhuhan 已提交
339
| subscriber | [CommonEventSubscriber](./js-apis-inner-commonEvent-commonEventSubscriber.md) | 是   | 表示订阅者对象。         |
X
xuzhihao 已提交
340
| callback   | AsyncCallback\<void>                            | 否   | 表示取消订阅的回调方法。 |
X
xuchenghua09 已提交
341

Z
zengyawen 已提交
342
**示例:**
X
xuchenghua09 已提交
343

L
Leon 已提交
344
```ts
345
let subscriber;	// 用于保存创建成功的订阅者对象,后续使用其完成订阅及退订的动作
Z
zengsiyu 已提交
346

347
// 订阅者信息
F
fangJinliang1 已提交
348
let subscribeInfo = {
X
xuchenghua09 已提交
349 350
	events: ["event"]
};
Z
zengsiyu 已提交
351

352
// 订阅公共事件回调
L
Leon 已提交
353
function subscribeCB(err, data) {
Z
zengsiyu 已提交
354
    if (err.code) {
355
        console.error(`subscribe failed, code is ${err.code}`);
Z
zengsiyu 已提交
356 357 358
    } else {
        console.info("subscribe " + JSON.stringify(data));
    }
X
xuchenghua09 已提交
359
}
Z
zengsiyu 已提交
360

361
// 创建订阅者回调
L
Leon 已提交
362
function createCB(err, commonEventSubscriber) {
Z
zengsiyu 已提交
363
    if (err.code) {
364
        console.error(`createSubscriber failed, code is ${err.code}`);
Z
zengsiyu 已提交
365 366 367
    } else {
        console.info("createSubscriber");
        subscriber = commonEventSubscriber;
368
        // 订阅公共事件
L
Leon 已提交
369
        CommonEvent.subscribe(subscriber, subscribeCB);
Z
zengsiyu 已提交
370
    }
X
xuchenghua09 已提交
371
}
Z
zengsiyu 已提交
372

373
// 取消订阅公共事件回调
L
Leon 已提交
374
function unsubscribeCB(err) {
Z
zengsiyu 已提交
375
	if (err.code) {
376
        console.error(`unsubscribe failed, code is ${err.code}`);
Z
zengsiyu 已提交
377 378 379
    } else {
        console.info("unsubscribe");
    }
X
xuchenghua09 已提交
380
}
Z
zengsiyu 已提交
381

382
// 创建订阅者
L
Leon 已提交
383
CommonEvent.createSubscriber(subscribeInfo, createCB);
Z
zengsiyu 已提交
384

385
// 取消订阅公共事件
L
Leon 已提交
386
CommonEvent.unsubscribe(subscriber, unsubscribeCB);
Z
zhuhan 已提交
387
```