如何发布自定义公共事件
·
如题,大概需求背景是在自定义服务进程中去监听底层事件,事件上报时发送相应的公共事件。
在调试过程中通过ServiceExtensionAbility实现了一个服务,但是是通过拷贝hap包到环境,bm install -u 0安装的,因为这个服务是singleton,keepalive的。
//公共事件相关信息
var options = {
code: 0, //公共事件的初始代码
data: "initial data",//公共事件的初始数据
isOrdered: true, //有序公共事件
parameters: {"para1":0 }
}
//发布公共事件回调
function publishCallBack(err) {
if (err) {
hilog.info(0x0000, 'testTag', "publish failed " + JSON.stringify(err));
} else {
hilog.info(0x0000, 'testTag', "publish");
}
}
export function publishEvents(code: number, para: Array<number>) {
//发布公共事件
try {
options.code = code
options.data = "usual.event.tvmw.plug"
for (let i = 0; i < para.length; i++) {
hilog.info(0x0000, "testTag", "registerListener data %d", para[i])
options.parameters["para"+i] = para[i]
}
CommonEventManager.publish("usual.event.tvmw.plug", options, publishCallBack);
} catch (err) {
hilog.info(0x0000, 'testTag', 'publish failed, catch error' + JSON.stringify(err));
}
}
服务进程通过调用publishEvents发布了事件,在另一个调试程序中去订阅事件,发现无法接收。通过查看cem信息有如下发现

并且通过cmd命令发送事件,另一应用程序可以接收,怀疑是userid影响。目前暂无思路,希望能给相关zhi'dao
更多推荐

所有评论(0)