js-apis-commonEvent.md 15.0 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
xuzhihao 已提交
43 44
import Base from '@ohos.base';

X
xuchenghua09 已提交
45
//发布公共事件回调
X
XKK 已提交
46
function publishCB(err:Base.BusinessError) {
Z
zengsiyu 已提交
47
	if (err.code) {
48
        console.error(`publish failed, code is ${err.code}`);
Z
zengsiyu 已提交
49 50 51
    } else {
        console.info("publish");
    }
X
xuchenghua09 已提交
52
}
Z
zengsiyu 已提交
53

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

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

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

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

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

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

Z
zengyawen 已提交
69
**参数:**
X
xuchenghua09 已提交
70

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

Z
zengyawen 已提交
77
**示例:**
X
xuchenghua09 已提交
78 79


L
Leon 已提交
80
```ts
X
xuzhihao 已提交
81 82 83
import Base from '@ohos.base';
import CommonEventManager from '@ohos.commonEventManager';

X
xuchenghua09 已提交
84
//公共事件相关信息
X
XKK 已提交
85
let options:CommonEventManager.CommonEventPublishData = {
86 87 88
	code: 0,			 //公共事件的初始代码
	data: "initial data",//公共事件的初始数据
	isOrdered: true	 //有序公共事件
X
xuchenghua09 已提交
89
}
Z
zengsiyu 已提交
90

X
xuchenghua09 已提交
91
//发布公共事件回调
X
XKK 已提交
92
function publishCB(err:Base.BusinessError) {
Z
zengsiyu 已提交
93
	if (err.code) {
94
        console.error(`publish failed, code is ${err.code}`);
Z
zengsiyu 已提交
95 96 97
    } else {
        console.info("publish");
    }
X
xuchenghua09 已提交
98
}
Z
zengsiyu 已提交
99

X
xuchenghua09 已提交
100
//发布公共事件
L
Leon 已提交
101
CommonEvent.publish("event", options, publishCB);
X
xuchenghua09 已提交
102 103
```

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

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

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

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

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

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

Z
zengsiyu 已提交
117 118
**参数:**

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

**示例:**

L
Leon 已提交
127
```ts
X
xuzhihao 已提交
128 129
import Base from '@ohos.base';

130
// 发布公共事件回调
X
XKK 已提交
131
function publishCB(err:Base.BusinessError) {
Z
zengsiyu 已提交
132
	if (err.code) {
133
        console.error(`publishAsUser failed, code is ${err.code}`);
Z
zengsiyu 已提交
134 135 136 137
    } else {
        console.info("publishAsUser");
    }
}
Z
zengsiyu 已提交
138

139
// 指定发送的用户
F
fangJinliang1 已提交
140
let userId = 100;
Z
zengsiyu 已提交
141

142
// 发布公共事件
L
Leon 已提交
143
CommonEvent.publishAsUser("event", userId, publishCB);
Z
zengsiyu 已提交
144 145
```

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

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

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

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

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

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

Z
zengsiyu 已提交
159 160
**参数:**

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

**示例:**


L
Leon 已提交
171
```ts
X
xuzhihao 已提交
172 173 174
import Base from '@ohos.base';
import CommonEventManager from '@ohos.commonEventManager';

175
// 公共事件相关信息
X
XKK 已提交
176
let options:CommonEventManager.CommonEventPublishData = {
177 178
	code: 0,			 // 公共事件的初始代码
	data: "initial data",// 公共事件的初始数据
Z
zengsiyu 已提交
179
}
Z
zengsiyu 已提交
180

181
// 发布公共事件回调
X
XKK 已提交
182 183
function publishCB(err:Base.BusinessError) {
    if (err.code) {
184
        console.error(`publishAsUser failed, code is ${err.code}`);
Z
zengsiyu 已提交
185 186 187 188
    } else {
        console.info("publishAsUser");
    }
}
Z
zengsiyu 已提交
189

190
// 指定发送的用户
F
fangJinliang1 已提交
191
let userId = 100;
Z
zengsiyu 已提交
192

193
// 发布公共事件
L
Leon 已提交
194
CommonEvent.publishAsUser("event", userId, options, publishCB);
Z
zengsiyu 已提交
195 196
```

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

Z
zengyawen 已提交
199
createSubscriber(subscribeInfo: CommonEventSubscribeInfo, callback: AsyncCallback\<CommonEventSubscriber>): void
X
xuchenghua09 已提交
200

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

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

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

Z
zengyawen 已提交
208
**参数:**
X
xuchenghua09 已提交
209

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

Z
zengyawen 已提交
215
**示例:**
X
xuchenghua09 已提交
216 217


L
Leon 已提交
218
```ts
X
xuzhihao 已提交
219 220 221
import Base from '@ohos.base';
import CommonEventManager from '@ohos.commonEventManager';

X
XKK 已提交
222
let subscriber:CommonEventManager.CommonEventSubscriber; // 用于保存创建成功的订阅者对象,后续使用其完成订阅及退订的动作
Z
zengsiyu 已提交
223

224
// 订阅者信息
X
XKK 已提交
225 226
let subscribeInfo:CommonEventManager.CommonEventSubscribeInfo = {
    events: ["event"]
X
xuchenghua09 已提交
227
};
Z
zengsiyu 已提交
228

229
// 创建订阅者回调
X
XKK 已提交
230
function createCB(err:Base.BusinessError, commonEventSubscriber:CommonEventManager.CommonEventSubscriber) {
Z
zengsiyu 已提交
231
    if (err.code) {
232
        console.error(`createSubscriber failed, code is ${err.code}`);
Z
zengsiyu 已提交
233 234 235 236
    } else {
        console.info("createSubscriber");
        subscriber = commonEventSubscriber;
    }
X
xuchenghua09 已提交
237
}
Z
zengsiyu 已提交
238

239
// 创建订阅者
L
Leon 已提交
240
CommonEvent.createSubscriber(subscribeInfo, createCB);
X
xuchenghua09 已提交
241 242
```

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

Z
zengyawen 已提交
245
createSubscriber(subscribeInfo: CommonEventSubscribeInfo): Promise\<CommonEventSubscriber>
X
xuchenghua09 已提交
246

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

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

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

Z
zengyawen 已提交
254
**参数:**
X
xuchenghua09 已提交
255

256
| 参数名          | 类型                                                  | 必填 | 说明           |
X
xuzhihao 已提交
257
| ------------- | ----------------------------------------------------- | ---- | -------------- |
Z
zhuhan 已提交
258
| subscribeInfo | [CommonEventSubscribeInfo](./js-apis-inner-commonEvent-commonEventSubscribeInfo.md) | 是   | 表示订阅信息。 |
X
xuchenghua09 已提交
259

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

Z
zengyawen 已提交
265
**示例:**
X
xuchenghua09 已提交
266

L
Leon 已提交
267
```ts
X
xuzhihao 已提交
268 269 270
import Base from '@ohos.base';
import CommonEventManager from '@ohos.commonEventManager';

X
XKK 已提交
271
let subscriber:CommonEventManager.CommonEventSubscriber; // 用于保存创建成功的订阅者对象,后续使用其完成订阅及退订的动作
Z
zengsiyu 已提交
272

273
// 订阅者信息
X
XKK 已提交
274 275
let subscribeInfo:CommonEventManager.CommonEventSubscribeInfo = {
    events: ["event"]
X
xuchenghua09 已提交
276
};
Z
zengsiyu 已提交
277

278
// 创建订阅者
X
XKK 已提交
279
CommonEvent.createSubscriber(subscribeInfo).then((commonEventSubscriber:CommonEventManager.CommonEventSubscriber) => {
Z
zengsiyu 已提交
280 281
    console.info("createSubscriber");
    subscriber = commonEventSubscriber;
X
XKK 已提交
282
}).catch((err:Base.BusinessError) => {
283
    console.error(`createSubscriber failed, code is ${err.code}`);
X
xuchenghua09 已提交
284 285 286
});
```

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

Z
zengyawen 已提交
289
subscribe(subscriber: CommonEventSubscriber, callback: AsyncCallback\<CommonEventData>): void
X
xuchenghua09 已提交
290

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

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

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

Z
zengyawen 已提交
298
**参数:**
X
xuchenghua09 已提交
299

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

Z
zengyawen 已提交
305
**示例:**
X
xuchenghua09 已提交
306

L
Leon 已提交
307
```ts
X
xuzhihao 已提交
308 309 310
import Base from '@ohos.base';
import CommonEventManager from '@ohos.commonEventManager';

X
XKK 已提交
311
let subscriber:CommonEventManager.CommonEventSubscriber;// 用于保存创建成功的订阅者对象,后续使用其完成订阅及退订的动作
Z
zengsiyu 已提交
312

313
// 订阅者信息
X
XKK 已提交
314
let subscribeInfo:CommonEventManager.CommonEventSubscribeInfo = {
X
xuchenghua09 已提交
315 316 317
    events: ["event"]
};

318
// 订阅公共事件回调
X
XKK 已提交
319
function subscribeCB(err:Base.BusinessError, data:CommonEventManager.CommonEventData) {
Z
zengsiyu 已提交
320
    if (err.code) {
321
        console.error(`subscribe failed, code is ${err.code}`);
Z
zengsiyu 已提交
322 323 324
    } else {
        console.info("subscribe " + JSON.stringify(data));
    }
X
xuchenghua09 已提交
325 326
}

327
// 创建订阅者回调
X
XKK 已提交
328
function createCB(err:Base.BusinessError, commonEventSubscriber:CommonEventManager.CommonEventSubscriber) {
Z
zengsiyu 已提交
329
    if (err.code) {
330
        console.error(`createSubscriber failed, code is ${err.code}`);
Z
zengsiyu 已提交
331 332
    } else {
        console.info("createSubscriber");
X
xuzhihao 已提交
333
        subscriber = commonEventSubscriber;
X
XKK 已提交
334
        // Subscribe to a common event.
L
Leon 已提交
335
        CommonEvent.subscribe(subscriber, subscribeCB);
Z
zengsiyu 已提交
336
    }
X
xuchenghua09 已提交
337 338
}

339
// 创建订阅者
L
Leon 已提交
340
CommonEvent.createSubscriber(subscribeInfo, createCB);
X
xuchenghua09 已提交
341 342
```

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

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

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

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

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

Z
zengyawen 已提交
354
**参数:**
X
xuchenghua09 已提交
355

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

Z
zengyawen 已提交
361
**示例:**
X
xuchenghua09 已提交
362

L
Leon 已提交
363
```ts
X
xuzhihao 已提交
364 365 366
import Base from '@ohos.base';
import CommonEventManager from '@ohos.commonEventManager';

X
XKK 已提交
367
let subscriber:CommonEventManager.CommonEventSubscriber;	// 用于保存创建成功的订阅者对象,后续使用其完成订阅及退订的动作
Z
zengsiyu 已提交
368

369
// 订阅者信息
X
XKK 已提交
370 371
let subscribeInfo:CommonEventManager.CommonEventSubscribeInfo = {
    events: ["event"]
X
xuchenghua09 已提交
372
};
Z
zengsiyu 已提交
373

374
// 订阅公共事件回调
X
XKK 已提交
375
function subscribeCB(err:Base.BusinessError, data:CommonEventManager.CommonEventData) {
Z
zengsiyu 已提交
376
    if (err.code) {
377
        console.error(`subscribe failed, code is ${err.code}`);
Z
zengsiyu 已提交
378 379 380
    } else {
        console.info("subscribe " + JSON.stringify(data));
    }
X
xuchenghua09 已提交
381
}
Z
zengsiyu 已提交
382

383
// 创建订阅者回调
X
XKK 已提交
384
function createCB(err:Base.BusinessError, commonEventSubscriber:CommonEventManager.CommonEventSubscriber) {
Z
zengsiyu 已提交
385
    if (err.code) {
386
        console.error(`createSubscriber failed, code is ${err.code}`);
Z
zengsiyu 已提交
387 388 389
    } else {
        console.info("createSubscriber");
        subscriber = commonEventSubscriber;
X
XKK 已提交
390
        // Subscribe to a common event.
L
Leon 已提交
391
        CommonEvent.subscribe(subscriber, subscribeCB);
Z
zengsiyu 已提交
392
    }
X
xuchenghua09 已提交
393
}
Z
zengsiyu 已提交
394

395
// 取消订阅公共事件回调
X
XKK 已提交
396 397
function unsubscribeCB(err:Base.BusinessError) {
    if (err.code) {
398
        console.error(`unsubscribe failed, code is ${err.code}`);
Z
zengsiyu 已提交
399 400 401
    } else {
        console.info("unsubscribe");
    }
X
xuchenghua09 已提交
402
}
Z
zengsiyu 已提交
403

404
// 创建订阅者
L
Leon 已提交
405
CommonEvent.createSubscriber(subscribeInfo, createCB);
Z
zengsiyu 已提交
406

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