HarmonyOS 鸿蒙Next 公共事件订阅接收不到事件

发布于 1周前 作者 yibo5220 来自 鸿蒙OS

HarmonyOS 鸿蒙Next 公共事件订阅接收不到事件

private registerCommonEvent() { CommonEventManager.createSubscriber({ events: [CommonEventManager.Support.COMMON_EVENT_TIME_TICK] , priority: 80 }).then((value) => { CommonEventManager.subscribe(value, (err: Base.BusinessError, data: CommonEventManager.CommonEventData) => { console.log(“something coming”) }) }).catch(() => { console.log(“something err”) }) }

以上代码 直接运行 无法接收到事件,但是 我debug断点在CommonEventManager.subscribe 这一行后能正常接收到事件,为什么。

如果这个代码写法有错误,具体应该怎么写。 目前我们要接收 系统时间分钟变化和电量变化两个事件


更多关于HarmonyOS 鸿蒙Next 公共事件订阅接收不到事件的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

事件需要发布和订阅,才能在订阅中收到回调,参考代码如下

import { BusinessError, commonEventManager } from '@kit.BasicServicesKit';
function publishCB(err: BusinessError) {
  if (err) {
    console.error(`publish failed, code is ${err.code}, message is ${err.message}`);
  } else {
    console.info("publish timetick");
  }
}
@Entry
@Component
struct WebComponent {
  controller: web_webview.WebviewController = new web_webview.WebviewController()
  aboutToAppear(): void {
  }
  build() {
    Column() {
      Button('publish')
        .onClick(() => {
          try {
            commonEventManager.publish(commonEventManager.Support.COMMON_EVENT_TIME_TICK, publishCB);
          } catch (error) {
            let err: BusinessError = error as BusinessError;
            console.error(`publish failed, code is ${err.code}, message is ${err.message}`);
          }
        })
      Button('subscibe')
        .onClick(() => {
          commonEventManager.createSubscriber({
            events: [commonEventManager.Support.COMMON_EVENT_TIME_TICK]
          , priority: 80
          }).then((value) => {
            commonEventManager.subscribe(value, (err: BusinessError, data: commonEventManager.CommonEventData) => {
              console.log("something coming")
            })
          }).catch(() => {
            console.log("something err")
          })
        })
    }
  }
}

更多关于HarmonyOS 鸿蒙Next 公共事件订阅接收不到事件的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


针对“HarmonyOS 鸿蒙Next 公共事件订阅接收不到事件”的问题,可能的原因及解决方案如下:

首先,确保事件发布者已正确发布事件。检查事件名称、参数是否与订阅时一致,以及事件是否在正确的上下文或组件中发布。

其次,验证订阅者是否正确订阅了事件。检查订阅代码是否已正确注册到系统中,并且订阅的事件名称与发布者发布的事件名称完全匹配。同时,确保订阅者的生命周期管理正确,避免在事件到达前订阅者已被销毁。

此外,还需考虑事件传递机制的限制。例如,某些事件可能仅在特定范围内有效,或者受权限控制。确保订阅者具有接收该事件的权限,并且事件传递范围覆盖订阅者。

最后,检查是否存在系统或框架层面的bug。尝试更新鸿蒙系统或相关框架到最新版本,看问题是否得到解决。

如果以上步骤均无法解决问题,可能是系统或应用层面的复杂问题。此时,建议详细记录问题现象、复现步骤及相关日志,以便进一步分析。如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部