鸿蒙Next公共事件订阅配置方法
在鸿蒙Next中,如何配置公共事件的订阅?具体需要哪些步骤和注意事项?能否提供一个完整的示例代码?
        
          2 回复
        
      
      
        鸿蒙Next公共事件订阅?简单!
- 在config.json里声明权限,比如"reqPermissions": [{"name": "ohos.permission.COMMON_EVENT"}]。
- 代码里用CommonEventManager.createSubscriber()搞个订阅者,再subscribe()收事件。
- 记得在onDestroy()里unsubscribe(),别让手机骂你“内存泄漏”!
 搞定,代码跑起来就像追剧一样丝滑~ 😎
更多关于鸿蒙Next公共事件订阅配置方法的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在鸿蒙Next(HarmonyOS NEXT)中,公共事件订阅可通过以下步骤配置:
1. 声明权限
在 module.json5 配置文件中添加订阅公共事件所需权限:
{
  "module": {
    "requestPermissions": [
      {
        "name": "ohos.permission.COMMONEVENT_STICKY" // 根据事件类型调整权限名
      }
    ]
  }
}
常用权限包括:
- ohos.permission.COMMONEVENT_STICKY(粘性事件)
- ohos.permission.SUBSCRIBE_COMMON_EVENT(通用订阅)
2. 订阅公共事件
在代码中实现订阅逻辑:
import commonEventManager from '@ohos.commonEventManager';
import commonEvent from '@ohos.commonEvent';
import { BusinessError } from '@ohos.base';
// 定义订阅参数
let subscribeInfo: commonEvent.CommonEventSubscribeInfo = {
  events: ["usual.event.SCREEN_ON"] // 订阅事件类型(示例:屏幕点亮事件)
};
// 创建订阅者对象
let subscriber: commonEventManager.CommonEventSubscriber | null = null;
commonEventManager.createSubscriber(subscribeInfo, (err: BusinessError, data: commonEventManager.CommonEventSubscriber) => {
  if (err) {
    console.error(`订阅失败,错误码:${err.code}`);
    return;
  }
  subscriber = data;
  console.info("订阅成功");
});
// 注册订阅者回调
if (subscriber !== null) {
  commonEventManager.subscribe(subscriber, (err: BusinessError, data: commonEvent.CommonEventData) => {
    if (err) {
      console.error(`接收事件失败,错误码:${err.code}`);
      return;
    }
    console.info("收到公共事件,数据:" + JSON.stringify(data));
  });
}
3. 取消订阅
在适当时机(如页面销毁)取消订阅:
if (subscriber !== null) {
  commonEventManager.unsubscribe(subscriber, (err: BusinessError) => {
    if (err) {
      console.error(`取消订阅失败,错误码:${err.code}`);
      return;
    }
    console.info("取消订阅成功");
  });
}
注意事项:
- 事件类型:需使用系统预定义事件(如 usual.event.SCREEN_ON),或自定义事件(需符合命名规范)。
- 生命周期管理:确保在组件销毁时取消订阅,避免资源泄漏。
- 权限校验:部分系统事件需要对应权限,需在配置文件中声明并在运行时申请。
通过以上步骤即可完成鸿蒙Next公共事件的订阅与管理。
 
        
       
                   
                   
                  

