从API版本6.0.0(20)开始,支持订阅和取消订阅空间事件的能力。
Enterprise Space Kit为应用提供订阅空间事件的能力。订阅空间切换事件后,应用将在空间切换时收到通知,并执行预设的自定义动作。同时,也提供取消订阅空间事件的能力,支持应用在特定场景下灵活管理空间事件的订阅状态。
详细接口说明可参考接口文档。
| 接口名 | 描述 |
|---|---|
| subscribeEvent(eventId: EventType[], callback: AsyncCallback<EventData>): number | 订阅空间事件,在相关事件触发时,通知应用侧。 |
| unsubscribeEvent(subscribeId: number): void | 取消订阅空间事件,在相关事件触发时,不再通知应用侧。 |
1.导入空间事件订阅API模块相关依赖。
import { AsyncCallback } from '@kit.BasicServicesKit';
import { hilog } from '@kit.PerformanceAnalysisKit';
import { spaceManager } from '@kit.EnterpriseSpaceKit';
import { ErrCode } from '../../common/ErrCode'; 2.空间事件订阅API接口封装。
const TAG = '[Sample_SpaceManagerSample]';
const DOMAIN = 0xF811;
export class SubscribeSpaceEventApi {
static subscribeEvent(eventIds: spaceManager.EventType[], callback: AsyncCallback<spaceManager.EventData>): number {
try {
const subscribeId = spaceManager.subscribeEvent(eventIds, callback);
hilog.info(DOMAIN, TAG, `Succeeded in subscribing event. subscribeId: ${subscribeId}`);
return ErrCode.OK;
} catch (err) {
hilog.error(DOMAIN, TAG, `Failed to subscribe event. Code: ${err.code}, message: ${err.message}`);
return ErrCode.ERR;
}
}
static unsubscribeEvent(subscribeId: number): void {
try {
spaceManager.unsubscribeEvent(subscribeId);
hilog.info(DOMAIN, TAG, 'Succeeded in unsubscribing event');
} catch (err) {
hilog.error(DOMAIN, TAG, `Failed to unsubscribe event. Code: ${err.code}, message: ${err.message}`);
}
}
} 3.导入空间事件订阅业务实现相关依赖。
import { router } from '@kit.ArkUI';
import { spaceManager } from '@kit.EnterpriseSpaceKit';
import { SubscribeSpaceEventApi } from '../api/SubscribeSpaceEventApi'
import { ErrCode } from '../../common/ErrCode';
import { hilog } from '@kit.PerformanceAnalysisKit'; 4.空间事件订阅业务相关实现。
const TAG = '[Sample_SpaceManagerSample]';
const DOMAIN = 0xF811;
@Entry
@Component
struct SubscribeSpaceEventPage {
subscribe() {
let eventIds: spaceManager.EventType[] = [spaceManager.EventType.EVENT_WORKSPACE_SWITCHED];
let callBack = (error: BusinessError, data: spaceManager.EventData) => {
if (error) {
hilog.error(DOMAIN, TAG, `error info:${error?.code}, err message:${error?.message}`);
} else {
hilog.info(DOMAIN, TAG, `event: ${data.event},currentWorkSpaceId: ${data.currentWorkspaceId}`);
// 处理事件
}
};
if (SubscribeSpaceEventApi.subscribeEvent(eventIds, callBack) !== ErrCode.OK) {
// 订阅失败处理
hilog.error(DOMAIN, TAG, 'Failed to subscribe event!');
return;
}
// 订阅成功处理
}
unSubscribe() {
let subscribeId = 100; // 由订阅空间事件得到的订阅ID。
SubscribeSpaceEventApi.unsubscribeEvent(subscribeId);
}
build() {
Column() {
Row() {
Button($r('app.string.subscribe'))
.buttonCommonStyle()
.onClick(() => {
this.subscribe();
})
}
Row() {
Button($r('app.string.unSubscribe'))
.buttonCommonStyle()
.onClick(() => {
this.unSubscribe();
})
}
Row() {
Button($r('app.string.back'))
.buttonCommonStyle()
.onClick(() => {
router.back();
})
}
}
}
}
@Extend(Button)
function buttonCommonStyle() {
.width(200)
.height(50)
.backgroundColor('#6366F1')
.fontColor('#FFFFFF')
.fontSize(14)
.margin({ left: 20, bottom: 5 })
}