HarmonyOS 鸿蒙Next如何在系统中代码监听网络变化,有没有对应的Api和文档,或者demo

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

HarmonyOS 鸿蒙Next如何在系统中代码监听网络变化,有没有对应的Api和文档,或者demo

我们在直播App中使用了如下的方式 监听系统的网络状态变化
1、
深色代码主题
复制
// 获取网络状态监听
network.subscribe({
success: (data) => {
LogTool.log(‘success get network type:’ + data.type);
this.netWork = data.type.toLowerCase();
}
});


2、
深色代码主题
复制
/**

  • 订阅指定网络状态变化的通知,支持多事件监听回调。
  • @param netAvailableCallback 订阅网络可用事件回调。
  • @param netUnavailableCallback 订阅网络不可用事件回调。
  • @param netCapabilitiesChangeCallback 订阅网络能力变化事件回调。比如切换Wi-Fi、切换VPN、切换为手机流量。
  • @param netConnectionPropertiesChangeCallback 订阅网络连接信息变化事件回调。比如更改Wi-Fi、切换Wi-Fi、切换蜂窝网络。
  • @param netBlockStatusChangeCallback 订阅网络阻塞状态事件回调。
  • @param netLostCallback 订阅网络丢失事件回调。 */ static register(netAvailableCallback?: Callback<connection.NetHandle>, netUnavailableCallback?: Callback<void>, netCapabilitiesChangeCallback?: Callback<connection.NetCapabilityInfo>, netConnectionPropertiesChangeCallback?: Callback<connection.NetConnectionPropertyInfo>, netBlockStatusChangeCallback?: Callback<connection.NetBlockStatusInfo>, netLostCallback?: Callback<connection.NetHandle>) { if (!NetworkUtil.netConnection) { NetworkUtil.netConnection = connection.createNetConnection(); //创建NetConnection对象 } //先使用register接口注册订阅事件 NetworkUtil.netConnection.register((error: BusinessError) => { if (error) { LogUtil.error(NetworkUtil-register-异常 ~ code: <span class="hljs-subst">${error.code}</span> -·- message: <span class="hljs-subst">${error.message}</span>); } }); if (netAvailableCallback) { NetworkUtil.netConnection.on(‘netAvailable’, netAvailableCallback); //订阅网络可用事件。 } if (netUnavailableCallback) { NetworkUtil.netConnection.on(‘netUnavailable’, netUnavailableCallback); //订阅网络不可用事件。 } if (netCapabilitiesChangeCallback) { NetworkUtil.netConnection.on(‘netCapabilitiesChange’,netCapabilitiesChangeCallback); //订阅网络能力变化事件。比如切换Wi-Fi、切换VPN、切换为手机流量。 } if (netConnectionPropertiesChangeCallback) { NetworkUtil.netConnection.on(‘netConnectionPropertiesChange’,netConnectionPropertiesChangeCallback); //订阅网络连接信息变化事件。比如更改Wi-Fi、切换Wi-Fi、切换蜂窝网络。 } if (netBlockStatusChangeCallback) { NetworkUtil.netConnection.on(‘netBlockStatusChange’,netBlockStatusChangeCallback); //订阅网络阻塞状态事件。 } if (netLostCallback) { NetworkUtil.netConnection.on(‘netLost’,netLostCallback); //订阅网络丢失事件。 }



但是都有一些问题,第一种的问题是,手机断网的情况下不会回调我们
第二种的问题是,监听以后 别人监听或则页面跳转多次以后,也就不太好使了

鸿蒙系统上推荐的网络监听的方式是那种,最好支持多个地方监听,互不影响的方式,并且通知要全面一点

更多关于HarmonyOS 鸿蒙Next如何在系统中代码监听网络变化,有没有对应的Api和文档,或者demo的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复
可以使用一下接口进行网络状态监听 NetConnection.on(‘netConnectionPropertiesChange’):监听网络连接信息变化事件,比如更改wifi、切换wifi、切换蜂窝网络。 链接: https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-net-connection-V5#ZH-CN_TOPIC_0000001847049896__onnetconnectionpropertieschange NetConnection.on(‘netBlockStatusChange’):监听网络阻塞事件,比如访问量过大造成的网络拥堵 链接: https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-net-connection-V5#ZH-CN_TOPIC_0000001847049896__onnetblockstatuschange NetConnection.on(‘netLost’):监听网络丢失事件,比如网络中断,主动断开网络连接。 链接: https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-net-connection-V5#ZH-CN_TOPIC_0000001847049896__onnetlost NetConnection.on(‘netUnavailable’):监听网络不可用事件,比如网络不通,无网络可用。 链接: https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-net-connection-V5#ZH-CN_TOPIC_0000001847049896__onnetunavailable

更多关于HarmonyOS 鸿蒙Next如何在系统中代码监听网络变化,有没有对应的Api和文档,或者demo的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


HarmonyOS 鸿蒙Next系统中,监听网络变化主要通过NetworkKit模块来实现。NetworkKit提供了丰富的API用于监测网络状态变化,包括网络类型变化、连接状态变化等。

具体实现时,开发者需要引入NetworkKit的SDK,并通过调用相关API来注册网络状态变化的监听器。API包括但不限于registerNetworkStatusListenerunregisterNetworkStatusListener等,用于注册和注销网络状态监听器。

鸿蒙系统官方文档中有详细的API说明和示例代码,开发者可以在鸿蒙开发者网站中找到这些文档。在文档中,不仅有API的详细解释,还有示例代码(demo)展示如何在实际项目中使用这些API来监听网络变化。

此外,鸿蒙开发者社区也是获取信息和解决问题的好去处,开发者可以在社区中查找类似问题的解决方案,或者发帖提问寻求帮助。

如果开发者在鸿蒙系统中进行网络变化监听时遇到问题,可以直接参考官方文档和示例代码,也可以在鸿蒙开发者社区中查找解决方案。如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html。

回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!