如何发布自定义公共事件
·
如题,大概需求背景是在自定义服务进程中去监听底层事件,事件上报时发送相应的公共事件。
在调试过程中通过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)