js-apis-commonEventManager.md 24.6 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

23
publish(event: string, callback: AsyncCallback\<void>): void
Z
ces doc  
zhuhan 已提交
24

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

F
fangJinliang1 已提交
27
**系统能力:** SystemCapability.Notification.CommonEvent
Z
ces doc  
zhuhan 已提交
28 29 30

**参数:**

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

**错误码:**

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

40 41 42 43 44 45 46
| 错误码ID | 错误信息                            |
| -------- | ----------------------------------- |
| 1500004  | not System services.                |
| 1500007  | error sending message to Common Event Service. |
| 1500008  | Common Event Service does not complete initialization. |
| 1500009  | error obtaining system parameters.  |

Z
ces doc  
zhuhan 已提交
47 48 49
**示例:**

```ts
X
xuzhihao 已提交
50 51
import Base from '@ohos.base';

Z
ces doc  
zhuhan 已提交
52
//发布公共事件回调
X
XKK 已提交
53 54
function publishCB(err:Base.BusinessError) {
    if (err) {
55
        console.error(`publish failed, code is ${err.code}, message is ${err.message}`);
Z
ces doc  
zhuhan 已提交
56 57 58 59 60 61 62
    } else {
        console.info("publish");
    }
}

//发布公共事件
try {
L
Leon 已提交
63
    CommonEventManager.publish("event", publishCB);
X
XKK 已提交
64 65
} catch (error) {
    let err:Base.BusinessError = error as Base.BusinessError;
66
    console.error(`publish failed, code is ${err.code}, message is ${err.message}`);
Z
ces doc  
zhuhan 已提交
67 68 69 70 71
}
```

## CommonEventManager.publish

72
publish(event: string, options: CommonEventPublishData, callback: AsyncCallback\<void>): void
Z
ces doc  
zhuhan 已提交
73

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

76
**系统能力:** SystemCapability.Notification.CommonEvent
Z
ces doc  
zhuhan 已提交
77 78 79

**参数:**

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

**错误码:**

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

90 91 92 93 94 95 96
| 错误码ID | 错误信息                            |
| -------- | ----------------------------------- |
| 1500004  | not System services.                |
| 1500007  | error sending message to Common Event Service. |
| 1500008  | Common Event Service does not complete initialization. |
| 1500009  | error obtaining system parameters.  |

Z
ces doc  
zhuhan 已提交
97 98 99
**示例:**

```ts
X
xuzhihao 已提交
100 101
import Base from '@ohos.base';

Z
ces doc  
zhuhan 已提交
102
//公共事件相关信息
X
XKK 已提交
103
let options:CommonEventManager.CommonEventPublishData = {
Z
ces doc  
zhuhan 已提交
104 105 106 107 108 109
	code: 0,			 //公共事件的初始代码
	data: "initial data",//公共事件的初始数据
	isOrdered: true	 //有序公共事件
}

//发布公共事件回调
X
XKK 已提交
110
function publishCB(err:Base.BusinessError) {
Z
ces doc  
zhuhan 已提交
111
	if (err) {
112
        console.error(`publish failed, code is ${err.code}, message is ${err.message}`);
Z
ces doc  
zhuhan 已提交
113 114 115 116 117 118 119
    } else {
        console.info("publish");
    }
}

//发布公共事件
try {
L
Leon 已提交
120
    CommonEventManager.publish("event", options, publishCB);
X
XKK 已提交
121 122
} catch (error) {
    let err:Base.BusinessError = error as Base.BusinessError;
123
    console.error(`publish failed, code is ${err.code}, message is ${err.message}`);
Z
ces doc  
zhuhan 已提交
124 125 126 127 128
}
```

## CommonEventManager.publishAsUser<sup>

129
publishAsUser(event: string, userId: number, callback: AsyncCallback\<void>): void
Z
ces doc  
zhuhan 已提交
130

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

F
fangJinliang1 已提交
133
**系统能力:** SystemCapability.Notification.CommonEvent
Z
ces doc  
zhuhan 已提交
134 135 136 137 138

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

**参数:**

X
xuzhihao 已提交
139
| 参数名     | 类型                 | 必填 | 说明                               |
Z
ces doc  
zhuhan 已提交
140 141 142 143 144 145
| -------- | -------------------- | ---- | ---------------------------------- |
| event    | string               | 是   | 表示要发送的公共事件。             |
| userId   | number               | 是   | 表示指定向该用户ID发送此公共事件。 |
| callback | AsyncCallback\<void> | 是   | 表示被指定的回调方法。             |

**错误码:**
L
Leon 已提交
146 147

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

149 150 151 152 153 154 155
| 错误码ID | 错误信息                            |
| -------- | ----------------------------------- |
| 1500004  | not System services.                |
| 1500007  | error sending message to Common Event Service. |
| 1500008  | Common Event Service does not complete initialization. |
| 1500009  | error obtaining system parameters.  |

Z
ces doc  
zhuhan 已提交
156 157 158
**示例:**

```ts
X
xuzhihao 已提交
159 160
import Base from '@ohos.base';

Z
ces doc  
zhuhan 已提交
161
//发布公共事件回调
X
XKK 已提交
162
function publishCB(err:Base.BusinessError) {
Z
ces doc  
zhuhan 已提交
163
	if (err) {
164
        console.error(`publishAsUser failed, code is ${err.code}, message is ${err.message}`);
Z
ces doc  
zhuhan 已提交
165 166 167 168 169 170
    } else {
        console.info("publishAsUser");
    }
}

//指定发送的用户
L
Leon 已提交
171
let userId = 100;
Z
ces doc  
zhuhan 已提交
172 173 174

//发布公共事件
try {
L
Leon 已提交
175
    CommonEventManager.publishAsUser("event", userId, publishCB);
X
XKK 已提交
176 177
} catch (error) {
    let err:Base.BusinessError = error as Base.BusinessError;
178
    console.error(`publishAsUser failed, code is ${err.code}, message is ${err.message}`);
Z
ces doc  
zhuhan 已提交
179 180 181 182 183
}
```

## CommonEventManager.publishAsUser

184
publishAsUser(event: string, userId: number, options: CommonEventPublishData, callback: AsyncCallback\<void>): void
Z
ces doc  
zhuhan 已提交
185

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

F
fangJinliang1 已提交
188
**系统能力:** SystemCapability.Notification.CommonEvent
Z
ces doc  
zhuhan 已提交
189 190 191 192 193

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

**参数:**

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

**错误码:**
L
Leon 已提交
202 203

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

205 206
| 错误码ID | 错误信息                            |
| -------- | ----------------------------------- |
207
| 1500004  | not System services or System app.                |
208 209 210 211
| 1500007  | error sending message to Common Event Service. |
| 1500008  | Common Event Service does not complete initialization. |
| 1500009  | error obtaining system parameters.  |

Z
ces doc  
zhuhan 已提交
212 213 214 215
**示例:**


```ts
X
xuzhihao 已提交
216 217
import Base from '@ohos.base';

Z
ces doc  
zhuhan 已提交
218
//公共事件相关信息
X
XKK 已提交
219
let options:CommonEventManager.CommonEventPublishData = {
Z
ces doc  
zhuhan 已提交
220 221 222 223 224
	code: 0,			 //公共事件的初始代码
	data: "initial data",//公共事件的初始数据
}

//发布公共事件回调
X
XKK 已提交
225
function publishCB(err:Base.BusinessError) {
Z
ces doc  
zhuhan 已提交
226
	if (err) {
227
        console.error(`publishAsUser failed, code is ${err.code}, message is ${err.message}`);
Z
ces doc  
zhuhan 已提交
228 229 230 231 232 233
    } else {
        console.info("publishAsUser");
    }
}

//指定发送的用户
L
Leon 已提交
234
let userId = 100;
Z
ces doc  
zhuhan 已提交
235 236 237

//发布公共事件
try {
L
Leon 已提交
238
    CommonEventManager.publishAsUser("event", userId, options, publishCB);
X
XKK 已提交
239 240
} catch (error) {
    let err:Base.BusinessError = error as Base.BusinessError;
241
    console.error(`publishAsUser failed, code is ${err.code}, message is ${err.message}`);
Z
ces doc  
zhuhan 已提交
242 243 244 245 246
}
```

## CommonEventManager.createSubscriber

247
createSubscriber(subscribeInfo: CommonEventSubscribeInfo, callback: AsyncCallback\<CommonEventSubscriber>): void
Z
ces doc  
zhuhan 已提交
248

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

F
fangJinliang1 已提交
251
**系统能力:** SystemCapability.Notification.CommonEvent
Z
ces doc  
zhuhan 已提交
252 253 254

**参数:**

X
xuzhihao 已提交
255
| 参数名          | 类型                                                         | 必填 | 说明                       |
Z
ces doc  
zhuhan 已提交
256
| ------------- | ------------------------------------------------------------ | ---- | -------------------------- |
Z
zhuhan 已提交
257 258
| subscribeInfo | [CommonEventSubscribeInfo](./js-apis-inner-commonEvent-commonEventSubscribeInfo.md)        | 是   | 表示订阅信息。             |
| callback      | AsyncCallback\<[CommonEventSubscriber](./js-apis-inner-commonEvent-commonEventSubscriber.md)> | 是   | 表示创建订阅者的回调方法。 |
Z
ces doc  
zhuhan 已提交
259 260 261 262

**示例:**

```ts
X
xuzhihao 已提交
263 264
import Base from '@ohos.base';

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

//订阅者信息
X
XKK 已提交
268
let subscribeInfo:CommonEventManager.CommonEventSubscribeInfo = {
Z
ces doc  
zhuhan 已提交
269 270 271 272
    events: ["event"]
};

//创建订阅者回调
X
XKK 已提交
273
function createCB(err:Base.BusinessError, commonEventSubscriber:CommonEventManager.CommonEventSubscriber) {
Z
ces doc  
zhuhan 已提交
274 275 276 277
    if(!err) {
        console.info("createSubscriber");
        subscriber = commonEventSubscriber;
    } else {
278
        console.error(`createSubscriber failed, code is ${err.code}, message is ${err.message}`);
Z
ces doc  
zhuhan 已提交
279 280 281 282 283
    }
}

//创建订阅者
try {
L
Leon 已提交
284
    CommonEventManager.createSubscriber(subscribeInfo, createCB);
X
XKK 已提交
285 286
} catch (error) {
    let err:Base.BusinessError = error as Base.BusinessError;
287
    console.error(`createSubscriber failed, code is ${err.code}, message is ${err.message}`);
Z
ces doc  
zhuhan 已提交
288 289 290 291 292
}
```

## CommonEventManager.createSubscriber

293
createSubscriber(subscribeInfo: CommonEventSubscribeInfo): Promise\<CommonEventSubscriber>
Z
ces doc  
zhuhan 已提交
294

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

F
fangJinliang1 已提交
297
**系统能力:** SystemCapability.Notification.CommonEvent
Z
ces doc  
zhuhan 已提交
298 299 300

**参数:**

X
xuzhihao 已提交
301
| 参数名          | 类型                                                  | 必填 | 说明           |
Z
ces doc  
zhuhan 已提交
302
| ------------- | ----------------------------------------------------- | ---- | -------------- |
Z
zhuhan 已提交
303
| subscribeInfo | [CommonEventSubscribeInfo](./js-apis-inner-commonEvent-commonEventSubscribeInfo.md) | 是   | 表示订阅信息。 |
Z
ces doc  
zhuhan 已提交
304 305 306 307

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

**示例:**

```ts
X
xuzhihao 已提交
313 314
import Base from '@ohos.base';

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

//订阅者信息
X
XKK 已提交
318
let subscribeInfo:CommonEventManager.CommonEventSubscribeInfo = {
Z
ces doc  
zhuhan 已提交
319 320 321 322
	events: ["event"]
};

//创建订阅者
X
XKK 已提交
323
CommonEventManager.createSubscriber(subscribeInfo).then((commonEventSubscriber:CommonEventManager.CommonEventSubscriber) => {
Z
ces doc  
zhuhan 已提交
324 325
    console.info("createSubscriber");
    subscriber = commonEventSubscriber;
X
XKK 已提交
326
}).catch((err:Base.BusinessError) => {
327
    console.error(`createSubscriber failed, code is ${err.code}, message is ${err.message}`);
Z
ces doc  
zhuhan 已提交
328 329 330 331
});

```

Z
zhuhan 已提交
332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353
## CommonEventManager.createSubscriberSync

createSubscriberSync(subscribeInfo: CommonEventSubscribeInfo): CommonEventSubscriber

createSubscriber的同步接口。

**系统能力:** SystemCapability.Notification.CommonEvent

**参数:**

| 参数名          | 类型                                                  | 必填 | 说明           |
| ------------- | ----------------------------------------------------- | ---- | -------------- |
| subscribeInfo | [CommonEventSubscribeInfo](./js-apis-inner-commonEvent-commonEventSubscribeInfo.md) | 是   | 表示订阅信息。 |

**返回值:**
| 类型                                                      | 说明             |
| --------------------------------------------------------- | ---------------- |
| [CommonEventSubscriber](./js-apis-inner-commonEvent-commonEventSubscriber.md) | 返回订阅者对象。 |

**示例:**

```ts
X
xuzhihao 已提交
354 355
import Base from '@ohos.base';

Z
zhuhan 已提交
356 357 358 359 360 361 362 363 364 365
let subscriber; //用于保存创建成功的订阅者对象,后续使用其完成订阅及退订的动作

//订阅者信息
let subscribeInfo = {
	events: ["event"]
};

//创建订阅者
try {
    subscriber = CommonEventManager.createSubscriberSync(subscribeInfo);
X
XKK 已提交
366 367
} catch (error) {
    let err:Base.BusinessError = error as Base.BusinessError;
Z
zhuhan 已提交
368 369 370 371 372
    console.error(`createSubscriberSync failed, code is ${err.code}, message is ${err.message}`);
}

```

Z
ces doc  
zhuhan 已提交
373 374
## CommonEventManager.subscribe

375
subscribe(subscriber: CommonEventSubscriber, callback: AsyncCallback\<CommonEventData>): void
Z
ces doc  
zhuhan 已提交
376

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

F
fangJinliang1 已提交
379
**系统能力:** SystemCapability.Notification.CommonEvent
Z
ces doc  
zhuhan 已提交
380 381 382

**参数:**

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

388 389 390 391 392 393 394 395 396 397
**错误码:**

错误码介绍请参考[@ohos.commonEventManager(事件)](../errorcodes/errorcode-CommonEventService.md)

| 错误码ID | 错误信息                            |
| -------- | ----------------------------------- |
| 801  | capability not supported.               |
| 1500007  | error sending message to Common Event Service. |
| 1500008  | Common Event Service does not complete initialization. |

Z
ces doc  
zhuhan 已提交
398 399 400
**示例:**

```ts
X
xuzhihao 已提交
401 402
import Base from '@ohos.base';

Z
ces doc  
zhuhan 已提交
403
//订阅者信息
X
XKK 已提交
404
let subscriber:CommonEventManager.CommonEventSubscriber; //用于保存创建成功的订阅者对象,后续使用其完成订阅及退订的动作
Z
ces doc  
zhuhan 已提交
405 406

//订阅者信息
X
XKK 已提交
407
let subscribeInfo:CommonEventManager.CommonEventSubscribeInfo = {
Z
ces doc  
zhuhan 已提交
408 409 410 411
    events: ["event"]
};

//订阅公共事件回调
X
XKK 已提交
412
function SubscribeCB(err:Base.BusinessError, data:CommonEventManager.CommonEventData) {
X
xuzhihao 已提交
413
    if (err) {
414
        console.error(`subscribe failed, code is ${err.code}, message is ${err.message}`);
Z
ces doc  
zhuhan 已提交
415 416 417 418 419 420
    } else {
        console.info("subscribe ");
    }
}

//创建订阅者回调
X
XKK 已提交
421
function createCB(err:Base.BusinessError, commonEventSubscriber:CommonEventManager.CommonEventSubscriber) {
Z
ces doc  
zhuhan 已提交
422 423
    if(!err) {
        console.info("createSubscriber");
X
xuzhihao 已提交
424
        subscriber = commonEventSubscriber;
Z
ces doc  
zhuhan 已提交
425 426
        //订阅公共事件
        try {
L
Leon 已提交
427
            CommonEventManager.subscribe(subscriber, SubscribeCB);
X
XKK 已提交
428 429
        } catch (error) {
            let err:Base.BusinessError = error as Base.BusinessError;
430
            console.error(`subscribe failed, code is ${err.code}, message is ${err.message}`);
Z
ces doc  
zhuhan 已提交
431 432
        }
    } else {
433
        console.error(`createSubscriber failed, code is ${err.code}, message is ${err.message}`);
Z
ces doc  
zhuhan 已提交
434 435 436 437 438
    }
}

//创建订阅者
try {
L
Leon 已提交
439
    CommonEventManager.createSubscriber(subscribeInfo, createCB);
X
XKK 已提交
440 441
} catch (error) {
    let err:Base.BusinessError = error as Base.BusinessError;
442
    console.error(`createSubscriber failed, code is ${err.code}, message is ${err.message}`);
Z
ces doc  
zhuhan 已提交
443 444 445 446 447
}
```

## CommonEventManager.unsubscribe

448
unsubscribe(subscriber: CommonEventSubscriber, callback?: AsyncCallback\<void>): void
Z
ces doc  
zhuhan 已提交
449

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

F
fangJinliang1 已提交
452
**系统能力:** SystemCapability.Notification.CommonEvent
Z
ces doc  
zhuhan 已提交
453 454 455

**参数:**

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

461 462 463 464 465 466 467 468 469 470
**错误码:**

错误码介绍请参考[@ohos.commonEventManager(事件)](../errorcodes/errorcode-CommonEventService.md)

| 错误码ID | 错误信息                            |
| -------- | ----------------------------------- |
| 801  | capability not supported.               |
| 1500007  | error sending message to Common Event Service. |
| 1500008  | Common Event Service does not complete initialization. |

Z
ces doc  
zhuhan 已提交
471 472 473
**示例:**

```ts
X
xuzhihao 已提交
474 475
import Base from '@ohos.base';

X
XKK 已提交
476
let subscriber:CommonEventManager.CommonEventSubscriber; //用于保存创建成功的订阅者对象,后续使用其完成订阅及退订的动作
Z
ces doc  
zhuhan 已提交
477
//订阅者信息
X
XKK 已提交
478
let subscribeInfo:CommonEventManager.CommonEventSubscribeInfo = {
Z
ces doc  
zhuhan 已提交
479 480 481
    events: ["event"]
};
//订阅公共事件回调
X
XKK 已提交
482
function subscribeCB(err:Base.BusinessError, data:CommonEventManager.CommonEventData) {
Z
ces doc  
zhuhan 已提交
483
    if (err) {
484
        console.error(`subscribe failed, code is ${err.code}, message is ${err.message}`);
Z
ces doc  
zhuhan 已提交
485 486 487 488 489
    } else {
        console.info("subscribe");
    }
}
//创建订阅者回调
X
XKK 已提交
490
function createCB(err:Base.BusinessError, commonEventSubscriber:CommonEventManager.CommonEventSubscriber) {
Z
ces doc  
zhuhan 已提交
491
    if (err) {
492
        console.error(`createSubscriber failed, code is ${err.code}, message is ${err.message}`);
Z
ces doc  
zhuhan 已提交
493 494
    } else {
        console.info("createSubscriber");
X
xuzhihao 已提交
495
        subscriber = commonEventSubscriber;
Z
ces doc  
zhuhan 已提交
496 497
        //订阅公共事件
        try {
L
Leon 已提交
498
            CommonEventManager.subscribe(subscriber, subscribeCB);
X
XKK 已提交
499 500
        } catch (error) {
            let err:Base.BusinessError = error as Base.BusinessError;
501
            console.error(`subscribe failed, code is ${err.code}, message is ${err.message}`);
Z
ces doc  
zhuhan 已提交
502 503 504 505
        }
    }
}
//取消订阅公共事件回调
X
XKK 已提交
506
function unsubscribeCB(err:Base.BusinessError) {
Z
ces doc  
zhuhan 已提交
507
    if (err) {
508
        console.error(`unsubscribe failed, code is ${err.code}, message is ${err.message}`);
Z
ces doc  
zhuhan 已提交
509 510 511 512 513 514
    } else {
        console.info("unsubscribe");
    }
}
//创建订阅者
try {
L
Leon 已提交
515
    CommonEventManager.createSubscriber(subscribeInfo, createCB);
X
XKK 已提交
516 517
} catch (error) {
    let err:Base.BusinessError = error as Base.BusinessError;
518
    console.error(`createSubscriber failed, code is ${err.code}, message is ${err.message}`);
Z
ces doc  
zhuhan 已提交
519 520 521 522
}

//取消订阅公共事件
try {
L
Leon 已提交
523
    CommonEventManager.unsubscribe(subscriber, unsubscribeCB);
X
XKK 已提交
524 525
} catch (error) {
    let err:Base.BusinessError = error as Base.BusinessError;
526
    console.error(`unsubscribe failed, code is ${err.code}, message is ${err.message}`);
Z
ces doc  
zhuhan 已提交
527
}
F
fangJinliang1 已提交
528 529 530 531
```

## CommonEventManager.removeStickyCommonEvent<sup>10+</sup>

532
removeStickyCommonEvent(event: string, callback: AsyncCallback\<void>): void
F
fangJinliang1 已提交
533 534 535 536 537 538 539

以回调形式移除粘性公共事件。

**系统能力:** SystemCapability.Notification.CommonEvent

**需要权限**:  ohos.permission.COMMONEVENT_STICKY

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

F
fangJinliang1 已提交
542 543 544 545 546 547 548
**参数:**

| 参数名   | 类型                 | 必填 | 说明                             |
| -------- | -------------------- | ---- | -------------------------------- |
| event    | string               | 是   | 表示被移除的粘性公共事件。       |
| callback | AsyncCallback\<void> | 是   | 表示移除粘性公共事件的回调方法。 |

549 550 551 552 553 554 555
**错误码:**

错误码介绍请参考[@ohos.commonEventManager(事件)](../errorcodes/errorcode-CommonEventService.md)

| 错误码ID | 错误信息                            |
| -------- | ----------------------------------- |
| 1500004  | not system service.                 |
556 557
| 1500007  | error sending message to Common Event Service.             |
| 1500008  | Common Event Service does not complete initialization.     |
558

F
fangJinliang1 已提交
559 560 561 562
**示例:**


```ts
X
xuzhihao 已提交
563 564
import Base from '@ohos.base';

X
XKK 已提交
565
CommonEventManager.removeStickyCommonEvent("sticky_event", (err:Base.BusinessError) => {
F
fangJinliang1 已提交
566 567 568 569 570 571 572 573 574 575
    if (err) {
        console.info(`Remove sticky event AsyncCallback failed, errCode: ${err.code}, errMes: ${err.message}`);
        return;
    }
    console.info(`Remove sticky event AsyncCallback success`);
});
```

## CommonEventManager.removeStickyCommonEvent<sup>10+</sup>

576
removeStickyCommonEvent(event: string): Promise\<void>
F
fangJinliang1 已提交
577 578 579 580 581 582 583

以Promise形式移除粘性公共事件。

**系统能力:** SystemCapability.Notification.CommonEvent

**需要权限**:  ohos.permission.COMMONEVENT_STICKY

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

F
fangJinliang1 已提交
586 587 588 589 590 591 592 593 594 595 596 597
**参数:**

| 参数名 | 类型   | 必填 | 说明                       |
| ------ | ------ | ---- | -------------------------- |
| event  | string | 是   | 表示被移除的粘性公共事件。 |

**返回值:**

| 类型           | 说明                         |
| -------------- | ---------------------------- |
| Promise\<void> | 表示移除粘性公共事件的对象。 |

598 599 600 601 602 603 604
**错误码:**

错误码介绍请参考[@ohos.commonEventManager(事件)](../errorcodes/errorcode-CommonEventService.md)

| 错误码ID | 错误信息                            |
| -------- | ----------------------------------- |
| 1500004  | not system service.                 |
605 606
| 1500007  | error sending message to Common Event Service.             |
| 1500008  | Common Event Service does not complete initialization.     |
607

F
fangJinliang1 已提交
608 609 610 611
**示例:**


```ts
X
xuzhihao 已提交
612 613
import Base from '@ohos.base';

614
CommonEventManager.removeStickyCommonEvent("sticky_event").then(() => {
F
fangJinliang1 已提交
615
    console.info(`Remove sticky event AsyncCallback success`);
X
XKK 已提交
616
}).catch ((err:Base.BusinessError) => {
F
fangJinliang1 已提交
617 618 619 620
    console.info(`Remove sticky event AsyncCallback failed, errCode: ${err.code}, errMes: ${err.message}`);
});
```

621 622 623 624 625 626 627 628 629 630 631 632 633 634 635
## CommonEventManager.setStaticSubscriberState<sup>10+</sup>

setStaticSubscriberState(enable: boolean, callback: AsyncCallback\<void>): void;

方法介绍:为当前应用设置静态订阅事件使能或去使能状态。使用callback异步回调。

**系统能力:** SystemCapability.Notification.CommonEvent

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

**参数:**

| 参数名 | 类型   | 必填 | 说明                       |
| ------ | ------ | ---- | -------------------------- |
| enable  | boolean | 是   | 表示静态订阅事件使能状态。 true:使能 false:去使能。 |
Z
zengyawen 已提交
636
| callback  | AsyncCallback\<void> | 是   | 表示设置静态订阅事件使能状态的回调方法。 |
637 638 639 640 641 642 643 644 645 646 647 648 649 650

**错误码:**

错误码介绍请参考[@ohos.commonEventManager(事件)](../errorcodes/errorcode-CommonEventService.md)

| 错误码ID | 错误信息                            |
| -------- | ----------------------------------- |
| 1500007  | error sending message to Common Event Service.             |
| 1500008  | Common Event Service does not complete initialization.     |

**示例:**


```ts
X
xuzhihao 已提交
651 652
import Base from '@ohos.base';

X
XKK 已提交
653
CommonEventManager.setStaticSubscriberState(true, (err:Base.BusinessError) => {
654 655 656 657
    if (!err) {
        console.info(`Set static subscriber state callback failed, err is null.`);
        return;
    }
X
XKK 已提交
658
    if (err.code !== undefined && err.code != null) {
659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700
        console.info(`Set static subscriber state callback failed, errCode: ${err.code}, errMes: ${err.message}`);
        return;
    }
    console.info(`Set static subscriber state callback success`);
});
```

## CommonEventManager.setStaticSubscriberState<sup>10+</sup>

setStaticSubscriberState(enable: boolean): Promise\<void>;

方法介绍:为当前应用设置静态订阅事件使能或去使能状态。使用Promise异步回调。

**系统能力:** SystemCapability.Notification.CommonEvent

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

**参数:**

| 参数名 | 类型   | 必填 | 说明                       |
| ------ | ------ | ---- | -------------------------- |
| enable  | boolean | 是   | 表示静态订阅事件使能状态。 true:使能 false:去使能。 |

**返回值:**

| 类型           | 说明                         |
| -------------- | ---------------------------- |
| Promise\<void> | 表示设置静态订阅事件使能状态的对象。 |

**错误码:**

错误码介绍请参考[@ohos.commonEventManager(事件)](../errorcodes/errorcode-CommonEventService.md)

| 错误码ID | 错误信息                            |
| -------- | ----------------------------------- |
| 1500007  | error sending message to Common Event Service.             |
| 1500008  | Common Event Service does not complete initialization.     |

**示例:**


```ts
X
xuzhihao 已提交
701 702
import Base from '@ohos.base';

703 704
CommonEventManager.setStaticSubscriberState(false).then(() => {
    console.info(`Set static subscriber state promise success`);
X
XKK 已提交
705
}).catch ((err:Base.BusinessError) => {
706 707 708
    console.info(`Set static subscriber state promise failed, errCode: ${err.code}, errMes: ${err.message}`);
});
```