如题,大概需求背景是在自定义服务进程中去监听底层事件,事件上报时发送相应的公共事件。

在调试过程中通过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

Logo

社区规范:仅讨论OpenHarmony相关问题。

更多推荐