js-apis-commonEventManager.md 13.3 KB
Newer Older
Z
zengyawen 已提交
1
# @ohos.commonEventManager (公共事件模块)
Z
ces doc  
zhuhan 已提交
2

L
Leon 已提交
3
本模块提供了公共事件相关的能力,包括发布公共事件、订阅公共事件、以及退订公共事件。
Z
ces doc  
zhuhan 已提交
4 5 6 7 8 9 10 11 12 13 14 15 16

> **说明:**
>
> 本模块首批接口从API version 9开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。

## 导入模块

```ts
import CommonEventManager from '@ohos.commonEventManager';
```

## Support

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

L
Leon 已提交
19
全部系统公共事件枚举定义请参见[系统公共事件定义](./commonEventManager-definitions.md)
Z
ces doc  
zhuhan 已提交
20 21 22

## CommonEventManager.publish

L
Leon 已提交
23 24 25
```ts
publish(event: string, callback: AsyncCallback<void>): void
```
Z
ces doc  
zhuhan 已提交
26

L
Leon 已提交
27
发布公共事件,并在发布后执行相应的回调函数。
Z
ces doc  
zhuhan 已提交
28

L
Leon 已提交
29
**系统能力:** `SystemCapability.Notification.CommonEvent`
Z
ces doc  
zhuhan 已提交
30 31 32

**参数:**

X
xuzhihao 已提交
33
| 参数名     | 类型                 | 必填 | 说明                   |
Z
ces doc  
zhuhan 已提交
34 35
| -------- | -------------------- | ---- | ---------------------- |
| event    | string               | 是   | 表示要发送的公共事件。 |
L
Leon 已提交
36
| callback | AsyncCallback\<void> | 是   | 表示事件发布后将要执行的回调函数。 |
Z
ces doc  
zhuhan 已提交
37 38 39

**错误码:**

L
Leon 已提交
40
错误码介绍请参考[@ohos.commonEventManager(事件)](../errorcodes/errorcode-CommonEventService.md)
Z
ces doc  
zhuhan 已提交
41 42 43 44 45

**示例:**

```ts
//发布公共事件回调
L
Leon 已提交
46
function publishCB(err) {
Z
ces doc  
zhuhan 已提交
47
	if (err) {
48
        console.error(`publish failed, code is ${err.code}, message is ${err.message}`);
Z
ces doc  
zhuhan 已提交
49 50 51 52 53 54 55
    } else {
        console.info("publish");
    }
}

//发布公共事件
try {
L
Leon 已提交
56
    CommonEventManager.publish("event", publishCB);
Z
ces doc  
zhuhan 已提交
57
} catch(err) {
58
    console.error(`publish failed, code is ${err.code}, message is ${err.message}`);
Z
ces doc  
zhuhan 已提交
59 60 61 62 63
}
```

## CommonEventManager.publish

L
Leon 已提交
64 65 66
```ts
publish(event: string, options: CommonEventPublishData, callback: AsyncCallback<void>): void
```
Z
ces doc  
zhuhan 已提交
67

L
Leon 已提交
68
以回调的形式发布公共事件。
Z
ces doc  
zhuhan 已提交
69

L
Leon 已提交
70
**系统能力:** `SystemCapability.Notification.CommonEvent`
Z
ces doc  
zhuhan 已提交
71 72 73

**参数:**

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

**错误码:**

L
Leon 已提交
82
错误码介绍请参考[@ohos.commonEventManager(事件)](../errorcodes/errorcode-CommonEventService.md)
Z
zhuhan 已提交
83

Z
ces doc  
zhuhan 已提交
84 85 86 87
**示例:**

```ts
//公共事件相关信息
L
Leon 已提交
88
let options = {
Z
ces doc  
zhuhan 已提交
89 90 91 92 93 94
	code: 0,			 //公共事件的初始代码
	data: "initial data",//公共事件的初始数据
	isOrdered: true	 //有序公共事件
}

//发布公共事件回调
L
Leon 已提交
95
function publishCB(err) {
Z
ces doc  
zhuhan 已提交
96
	if (err) {
97
        console.error(`publish failed, code is ${err.code}, message is ${err.message}`);
Z
ces doc  
zhuhan 已提交
98 99 100 101 102 103 104
    } else {
        console.info("publish");
    }
}

//发布公共事件
try {
L
Leon 已提交
105
    CommonEventManager.publish("event", options, publishCB);
Z
ces doc  
zhuhan 已提交
106
} catch (err) {
107
    console.error(`publish failed, code is ${err.code}, message is ${err.message}`);
Z
ces doc  
zhuhan 已提交
108 109 110 111 112
}
```

## CommonEventManager.publishAsUser<sup>

L
Leon 已提交
113 114 115
```ts
publishAsUser(event: string, userId: number, callback: AsyncCallback<void>): void
```
Z
ces doc  
zhuhan 已提交
116

L
Leon 已提交
117
以回调的形式向指定用户发布公共事件。
Z
ces doc  
zhuhan 已提交
118

L
Leon 已提交
119
**系统能力:** `SystemCapability.Notification.CommonEvent`
Z
ces doc  
zhuhan 已提交
120 121 122 123 124

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

**参数:**

X
xuzhihao 已提交
125
| 参数名     | 类型                 | 必填 | 说明                               |
Z
ces doc  
zhuhan 已提交
126 127 128 129 130 131
| -------- | -------------------- | ---- | ---------------------------------- |
| event    | string               | 是   | 表示要发送的公共事件。             |
| userId   | number               | 是   | 表示指定向该用户ID发送此公共事件。 |
| callback | AsyncCallback\<void> | 是   | 表示被指定的回调方法。             |

**错误码:**
L
Leon 已提交
132 133

错误码介绍请参考[@ohos.commonEventManager(事件)](../errorcodes/errorcode-CommonEventService.md)
Z
ces doc  
zhuhan 已提交
134 135 136 137 138

**示例:**

```ts
//发布公共事件回调
L
Leon 已提交
139
function publishCB(err) {
Z
ces doc  
zhuhan 已提交
140
	if (err) {
141
        console.error(`publishAsUser failed, code is ${err.code}, message is ${err.message}`);
Z
ces doc  
zhuhan 已提交
142 143 144 145 146 147
    } else {
        console.info("publishAsUser");
    }
}

//指定发送的用户
L
Leon 已提交
148
let userId = 100;
Z
ces doc  
zhuhan 已提交
149 150 151

//发布公共事件
try {
L
Leon 已提交
152
    CommonEventManager.publishAsUser("event", userId, publishCB);
Z
ces doc  
zhuhan 已提交
153
} catch (err) {
154
    console.error(`publishAsUser failed, code is ${err.code}, message is ${err.message}`);
Z
ces doc  
zhuhan 已提交
155 156 157 158 159
}
```

## CommonEventManager.publishAsUser

L
Leon 已提交
160 161 162
```ts
publishAsUser(event: string, userId: number, options: CommonEventPublishData, callback: AsyncCallback<void>): void
```
Z
ces doc  
zhuhan 已提交
163

L
Leon 已提交
164
以回调形式向指定用户发布公共事件并指定发布信息。
Z
ces doc  
zhuhan 已提交
165

L
Leon 已提交
166
**系统能力:** `SystemCapability.Notification.CommonEvent`
Z
ces doc  
zhuhan 已提交
167 168 169 170 171

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

**参数:**

X
xuzhihao 已提交
172
| 参数名     | 类型                   | 必填 | 说明                   |
Z
ces doc  
zhuhan 已提交
173 174 175
| -------- | ---------------------- | ---- | ---------------------- |
| event    | string                 | 是   | 表示要发布的公共事件。  |
| userId   | number | 是 | 表示指定向该用户ID发送此公共事件。 |
Z
zhuhan 已提交
176
| options  | [CommonEventPublishData](./js-apis-inner-commonEvent-commonEventPublishData.md) | 是   | 表示发布公共事件的属性。 |
Z
ces doc  
zhuhan 已提交
177 178 179
| callback | AsyncCallback\<void>   | 是   | 表示被指定的回调方法。  |

**错误码:**
L
Leon 已提交
180 181

错误码介绍请参考[@ohos.commonEventManager(事件)](../errorcodes/errorcode-CommonEventService.md)
Z
ces doc  
zhuhan 已提交
182 183 184 185 186 187

**示例:**


```ts
//公共事件相关信息
L
Leon 已提交
188
let options = {
Z
ces doc  
zhuhan 已提交
189 190 191 192 193
	code: 0,			 //公共事件的初始代码
	data: "initial data",//公共事件的初始数据
}

//发布公共事件回调
L
Leon 已提交
194
function publishCB(err) {
Z
ces doc  
zhuhan 已提交
195
	if (err) {
196
        console.error(`publishAsUser failed, code is ${err.code}, message is ${err.message}`);
Z
ces doc  
zhuhan 已提交
197 198 199 200 201 202
    } else {
        console.info("publishAsUser");
    }
}

//指定发送的用户
L
Leon 已提交
203
let userId = 100;
Z
ces doc  
zhuhan 已提交
204 205 206

//发布公共事件
try {
L
Leon 已提交
207
    CommonEventManager.publishAsUser("event", userId, options, publishCB);
Z
ces doc  
zhuhan 已提交
208
} catch (err) {
209
    console.error(`publishAsUser failed, code is ${err.code}, message is ${err.message}`);
Z
ces doc  
zhuhan 已提交
210 211 212 213 214
}
```

## CommonEventManager.createSubscriber

L
Leon 已提交
215 216 217
```ts
createSubscriber(subscribeInfo: CommonEventSubscribeInfo, callback: AsyncCallback<CommonEventSubscriber>): void
```
Z
ces doc  
zhuhan 已提交
218

L
Leon 已提交
219
以回调形式创建订阅者。
Z
ces doc  
zhuhan 已提交
220

L
Leon 已提交
221
**系统能力:** `SystemCapability.Notification.CommonEvent`
Z
ces doc  
zhuhan 已提交
222 223 224

**参数:**

X
xuzhihao 已提交
225
| 参数名          | 类型                                                         | 必填 | 说明                       |
Z
ces doc  
zhuhan 已提交
226
| ------------- | ------------------------------------------------------------ | ---- | -------------------------- |
Z
zhuhan 已提交
227 228
| subscribeInfo | [CommonEventSubscribeInfo](./js-apis-inner-commonEvent-commonEventSubscribeInfo.md)        | 是   | 表示订阅信息。             |
| callback      | AsyncCallback\<[CommonEventSubscriber](./js-apis-inner-commonEvent-commonEventSubscriber.md)> | 是   | 表示创建订阅者的回调方法。 |
Z
ces doc  
zhuhan 已提交
229 230 231 232 233

**示例:**


```ts
L
Leon 已提交
234
let subscriber; //用于保存创建成功的订阅者对象,后续使用其完成订阅及退订的动作
Z
ces doc  
zhuhan 已提交
235 236

//订阅者信息
L
Leon 已提交
237
let subscribeInfo = {
Z
ces doc  
zhuhan 已提交
238 239 240 241
    events: ["event"]
};

//创建订阅者回调
L
Leon 已提交
242
function createCB(err, commonEventSubscriber) {
Z
ces doc  
zhuhan 已提交
243 244 245 246
    if(!err) {
        console.info("createSubscriber");
        subscriber = commonEventSubscriber;
    } else {
247
        console.error(`createSubscriber failed, code is ${err.code}, message is ${err.message}`);
Z
ces doc  
zhuhan 已提交
248 249 250 251 252
    }
}

//创建订阅者
try {
L
Leon 已提交
253
    CommonEventManager.createSubscriber(subscribeInfo, createCB);
Z
ces doc  
zhuhan 已提交
254
} catch (err) {
255
    console.error(`createSubscriber failed, code is ${err.code}, message is ${err.message}`);
Z
ces doc  
zhuhan 已提交
256 257 258 259 260
}
```

## CommonEventManager.createSubscriber

L
Leon 已提交
261 262 263
```ts
createSubscriber(subscribeInfo: CommonEventSubscribeInfo): Promise<CommonEventSubscriber>
```
Z
ces doc  
zhuhan 已提交
264

L
Leon 已提交
265
以Promise形式创建订阅者。
Z
ces doc  
zhuhan 已提交
266

L
Leon 已提交
267
**系统能力:** `SystemCapability.Notification.CommonEvent`
Z
ces doc  
zhuhan 已提交
268 269 270

**参数:**

X
xuzhihao 已提交
271
| 参数名          | 类型                                                  | 必填 | 说明           |
Z
ces doc  
zhuhan 已提交
272
| ------------- | ----------------------------------------------------- | ---- | -------------- |
Z
zhuhan 已提交
273
| subscribeInfo | [CommonEventSubscribeInfo](./js-apis-inner-commonEvent-commonEventSubscribeInfo.md) | 是   | 表示订阅信息。 |
Z
ces doc  
zhuhan 已提交
274 275 276 277

**返回值:**
| 类型                                                      | 说明             |
| --------------------------------------------------------- | ---------------- |
Z
zhuhan 已提交
278
| Promise\<[CommonEventSubscriber](./js-apis-inner-commonEvent-commonEventSubscriber.md)> | 返回订阅者对象。 |
Z
ces doc  
zhuhan 已提交
279 280 281 282

**示例:**

```ts
L
Leon 已提交
283
let subscriber; //用于保存创建成功的订阅者对象,后续使用其完成订阅及退订的动作
Z
ces doc  
zhuhan 已提交
284 285

//订阅者信息
L
Leon 已提交
286
let subscribeInfo = {
Z
ces doc  
zhuhan 已提交
287 288 289 290
	events: ["event"]
};

//创建订阅者
L
Leon 已提交
291
CommonEventManager.createSubscriber(subscribeInfo).then((commonEventSubscriber) => {
Z
ces doc  
zhuhan 已提交
292 293 294
    console.info("createSubscriber");
    subscriber = commonEventSubscriber;
}).catch((err) => {
295
    console.error(`createSubscriber failed, code is ${err.code}, message is ${err.message}`);
Z
ces doc  
zhuhan 已提交
296 297 298 299 300 301
});

```

## CommonEventManager.subscribe

L
Leon 已提交
302 303 304
```ts
subscribe(subscriber: CommonEventSubscriber, callback: AsyncCallback<CommonEventData>): void
```
Z
ces doc  
zhuhan 已提交
305

L
Leon 已提交
306
以回调形式订阅公共事件。
Z
ces doc  
zhuhan 已提交
307

L
Leon 已提交
308
**系统能力:** `SystemCapability.Notification.CommonEvent`
Z
ces doc  
zhuhan 已提交
309 310 311

**参数:**

X
xuzhihao 已提交
312
| 参数名       | 类型                                                | 必填 | 说明                             |
Z
ces doc  
zhuhan 已提交
313
| ---------- | ---------------------------------------------------- | ---- | -------------------------------- |
Z
zhuhan 已提交
314 315
| subscriber | [CommonEventSubscriber](./js-apis-inner-commonEvent-commonEventSubscriber.md)     | 是   | 表示订阅者对象。                 |
| callback   | AsyncCallback\<[CommonEventData](./js-apis-inner-commonEvent-commonEventData.md)> | 是   | 表示接收公共事件数据的回调函数。 |
Z
ces doc  
zhuhan 已提交
316 317 318 319 320

**示例:**

```ts
//订阅者信息
L
Leon 已提交
321
let subscriber; //用于保存创建成功的订阅者对象,后续使用其完成订阅及退订的动作
Z
ces doc  
zhuhan 已提交
322 323

//订阅者信息
L
Leon 已提交
324
let subscribeInfo = {
Z
ces doc  
zhuhan 已提交
325 326 327 328
    events: ["event"]
};

//订阅公共事件回调
L
Leon 已提交
329
function SubscribeCB(err, data) {
X
xuzhihao 已提交
330
    if (err) {
331
        console.error(`subscribe failed, code is ${err.code}, message is ${err.message}`);
Z
ces doc  
zhuhan 已提交
332 333 334 335 336 337
    } else {
        console.info("subscribe ");
    }
}

//创建订阅者回调
X
xuzhihao 已提交
338
function createCB(err, commonEventSubscriber) {
Z
ces doc  
zhuhan 已提交
339 340
    if(!err) {
        console.info("createSubscriber");
X
xuzhihao 已提交
341
        subscriber = commonEventSubscriber;
Z
ces doc  
zhuhan 已提交
342 343
        //订阅公共事件
        try {
L
Leon 已提交
344
            CommonEventManager.subscribe(subscriber, SubscribeCB);
Z
ces doc  
zhuhan 已提交
345
        } catch (err) {
346
            console.error(`subscribe failed, code is ${err.code}, message is ${err.message}`);
Z
ces doc  
zhuhan 已提交
347 348
        }
    } else {
349
        console.error(`createSubscriber failed, code is ${err.code}, message is ${err.message}`);
Z
ces doc  
zhuhan 已提交
350 351 352 353 354
    }
}

//创建订阅者
try {
L
Leon 已提交
355
    CommonEventManager.createSubscriber(subscribeInfo, createCB);
Z
ces doc  
zhuhan 已提交
356
} catch (err) {
357
    console.error(`createSubscriber failed, code is ${err.code}, message is ${err.message}`);
Z
ces doc  
zhuhan 已提交
358 359 360 361 362
}
```

## CommonEventManager.unsubscribe

L
Leon 已提交
363 364 365
```ts
unsubscribe(subscriber: CommonEventSubscriber, callback?: AsyncCallback<void>): void
```
Z
ces doc  
zhuhan 已提交
366

L
Leon 已提交
367
以回调形式取消订阅公共事件。
Z
ces doc  
zhuhan 已提交
368

L
Leon 已提交
369
**系统能力:** `SystemCapability.Notification.CommonEvent`
Z
ces doc  
zhuhan 已提交
370 371 372

**参数:**

X
xuzhihao 已提交
373
| 参数名       | 类型                                             | 必填 | 说明                     |
Z
ces doc  
zhuhan 已提交
374
| ---------- | ----------------------------------------------- | ---- | ------------------------ |
Z
zhuhan 已提交
375
| subscriber | [CommonEventSubscriber](./js-apis-inner-commonEvent-commonEventSubscriber.md) | 是   | 表示订阅者对象。         |
Z
ces doc  
zhuhan 已提交
376 377 378 379 380
| callback   | AsyncCallback\<void>                            | 否   | 表示取消订阅的回调方法。 |

**示例:**

```ts
L
Leon 已提交
381
let subscriber; //用于保存创建成功的订阅者对象,后续使用其完成订阅及退订的动作
Z
ces doc  
zhuhan 已提交
382
//订阅者信息
L
Leon 已提交
383
let subscribeInfo = {
Z
ces doc  
zhuhan 已提交
384 385 386
    events: ["event"]
};
//订阅公共事件回调
L
Leon 已提交
387
function subscribeCB(err, data) {
Z
ces doc  
zhuhan 已提交
388
    if (err) {
389
        console.error(`subscribe failed, code is ${err.code}, message is ${err.message}`);
Z
ces doc  
zhuhan 已提交
390 391 392 393 394
    } else {
        console.info("subscribe");
    }
}
//创建订阅者回调
X
xuzhihao 已提交
395
function createCB(err, commonEventSubscriber) {
Z
ces doc  
zhuhan 已提交
396
    if (err) {
397
        console.error(`createSubscriber failed, code is ${err.code}, message is ${err.message}`);
Z
ces doc  
zhuhan 已提交
398 399
    } else {
        console.info("createSubscriber");
X
xuzhihao 已提交
400
        subscriber = commonEventSubscriber;
Z
ces doc  
zhuhan 已提交
401 402
        //订阅公共事件
        try {
L
Leon 已提交
403
            CommonEventManager.subscribe(subscriber, subscribeCB);
Z
ces doc  
zhuhan 已提交
404
        } catch(err) {
405
            console.error(`subscribe failed, code is ${err.code}, message is ${err.message}`);
Z
ces doc  
zhuhan 已提交
406 407 408 409
        }
    }
}
//取消订阅公共事件回调
L
Leon 已提交
410
function unsubscribeCB(err) {
Z
ces doc  
zhuhan 已提交
411
    if (err) {
412
        console.error(`unsubscribe failed, code is ${err.code}, message is ${err.message}`);
Z
ces doc  
zhuhan 已提交
413 414 415 416 417 418
    } else {
        console.info("unsubscribe");
    }
}
//创建订阅者
try {
L
Leon 已提交
419
    CommonEventManager.createSubscriber(subscribeInfo, createCB);
Z
ces doc  
zhuhan 已提交
420
} catch (err) {
421
    console.error(`createSubscriber failed, code is ${err.code}, message is ${err.message}`);
Z
ces doc  
zhuhan 已提交
422 423 424 425
}

//取消订阅公共事件
try {
L
Leon 已提交
426
    CommonEventManager.unsubscribe(subscriber, unsubscribeCB);
Z
ces doc  
zhuhan 已提交
427
} catch (err) {
428
    console.error(`unsubscribe failed, code is ${err.code}, message is ${err.message}`);
Z
ces doc  
zhuhan 已提交
429
}
Z
zhuhan 已提交
430
```