HarmonyOS 鸿蒙Next 使用network subscribe时 从有网(WIFI)- 没网(none)无法监听到网络变化

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

HarmonyOS 鸿蒙Next 使用network subscribe时 从有网(WIFI)- 没网(none)无法监听到网络变化 使用network subscribe时 从有网(WIFI)- 没网(none)无法监听到网络变化

2 回复

使用observer监听网络状态

static netListenerObserver(callback?: () => void) {
  try {
    observer.on('networkStateChange', (data: observer.NetworkState) => {
      CommonUtils.postEvent(EventTag.NET_WORK_EVENT_ID)
      console.info('netListenerObserver', 'networkStateChange', JSON.stringify(data))
    });
    console.info('netListenerObserver', 'options end')
  } catch (e) {
    console.error('netListenerObserver', JSON.stringify(e))
  }
}

使用wifiManager监听网络状态

static netListenerWifiManager(callback?: () => void) {
  try {
    wifiManager.on("wifiStateChange", (result: number) => {
      CommonUtils.postEvent(EventTag.NET_WORK_EVENT_ID)
      console.info('netListenerWifiManager', 'wifiStateChange', JSON.stringify(result))
      let netState = ''
      if (result == 3 || result == 0) { //断开链接
        netState = '已断开'
      } else if (result == 1 || result == 2) { //开启链接
        netState = '已开启'
      }
      connection.getDefaultNet((error: BusinessError, data: connection.NetHandle) => {
        if (error) {
          console.error("netListenerConnection", 'getDefaultNet', JSON.stringify(error));
          return;
        }
        console.info("netListenerConnection", 'getDefaultNet', JSON.stringify(data));
      });
    });
  } catch (e) {
    console.error('netListenerWifiManager', JSON.stringify(e))
  }
}

使用network监听网络状态

static netListenerNetwork(callback?: () => void) {
  try {
    network.subscribe({
      success: (data) => {
        console.info('netListenerNetwork', 'subscribe', JSON.stringify(data));
        CommonUtils.postEvent(EventTag.NET_WORK_EVENT_ID)
        let netType = data.type
        network.getType({
          success: (data) => {
            console.info('netListenerNetwork', 'getType', JSON.stringify(data));
          }
        });
      }
    });
  } catch (e) {
    console.error('netListenerNetwork', JSON.stringify(e))
  }
}

使用connection监听网络状态

static netListenerConnection(callback?: () => void) {
  try {
    // 创建NetConnection对象
    let netCon: connection.NetConnection = connection.createNetConnection();
    // 先使用register接口注册订阅事件
    netCon.register((error: BusinessError) => {
      console.info("netListenerConnection", 'register', JSON.stringify(error));
    });

    // 订阅网络可用事件。调用register后,才能接收到此事件通知
    netCon.on('netAvailable', (data: connection.NetHandle) => {
      CommonUtils.postEvent(EventTag.NET_WORK_EVENT_ID)
      console.info("netListenerConnection", 'netAvailable', JSON.stringify(data));
    });
    // 订阅网络可用事件。调用register后,才能接收到此事件通知
    netCon.on('netConnectionPropertiesChange', (data: connection.NetConnectionPropertyInfo) => {
      CommonUtils.postEvent(EventTag.NET_WORK_EVENT_ID)
      console.info("netListenerConnection", 'netConnectionPropertiesChange', JSON.stringify(data));
    });
    // 订阅网络可用事件。调用register后,才能接收到此事件通知
    netCon.on('netLost', (data: connection.NetHandle) => {
      CommonUtils.postEvent(EventTag.NET_WORK_EVENT_ID)
      console.info("netListenerConnection", 'netLost', JSON.stringify(data));
    });
    // 订阅网络不可用事件。调用register后,才能接收到此事件通知
    netCon.on('netUnavailable', () => {
      CommonUtils.postEvent(EventTag.NET_WORK_EVENT_ID)
      console.info("netListenerConnection", 'netUnavailable');
    });
    // connection.getDefaultNet((error: BusinessError, data: connection.NetHandle) => { 
    //   if (error) { 
    //     console.error("netListenerConnection", 'getDefaultNet', JSON.stringify(error)); 
    //     return; 
    //   } 
    //   console.info("netListenerConnection", 'getDefaultNet', JSON.stringify(data)); 
    // }); 
  } catch (e) {
    console.error('netListenerConnection', JSON.stringify(e))
  }
}

更多关于HarmonyOS 鸿蒙Next 使用network subscribe时 从有网(WIFI)- 没网(none)无法监听到网络变化的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next系统中,使用network subscribe功能时,若遇到从有网(WIFI)到没网(none)无法监听到网络变化的问题,这通常与网络状态监听机制或相关API的使用不当有关。

请确认以下几点:

  1. 权限检查:确保应用已正确申请并获得了网络状态变化的权限。

  2. API使用:检查network subscribe的API调用是否正确,包括注册监听器、处理回调等步骤。确保API版本与鸿蒙系统版本兼容。

  3. 网络状态广播:鸿蒙系统可能通过广播或特定API通知网络状态变化。确认是否漏掉了关键的广播接收器或回调处理逻辑。

  4. 系统日志:查看系统日志,分析是否有关于网络状态变化的相关错误或警告信息。

  5. 模拟与实测:尝试在不同设备、不同网络环境下复现问题,以排除特定环境或设备的问题。

  6. 文档与社区:查阅最新的鸿蒙开发者文档,或在鸿蒙开发者社区中搜索类似问题,看是否有其他开发者遇到并解决了相同的问题。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部