鸿蒙应用开发:从网络获取数据
一、网络状态概述
上述任一指标的变化均可视为网络状态的改变
二、获取网络信息
创建网络对象
//创建网络对象
//?表示可传可不传
connection.createNetConnection(netSpecifier?:NetSpecifier,timeout?:number):NetConnection;
获取默认激活网络及其能力
//获取默认激活网络
connection.getDefaultNet(): Promise<NetHandle>
NetHandle是数据网络的句柄 其属性netId表示网络ID,通过调用getNetCapabilities方法,传入NetHandle对象,可以获取对应网络的具体能力,返回值NetCapabilities表示网络能力集,包含网络的具体能力信息
示例中,通过这两个方法配合使用,可以获取网络能力,若getDefaultNet方法返回的netHandle的netId为0,表示无默认网络,则需要根据实际情况添加处理机制,则表示已成功获取默认网络,此时可以通过getNetCapabilities方法获取其能力集
三、订阅网络状态
以视频应用为例 当网络状态可以正常获取资源时,视频正常播放。当网络断开时,无法加载网络资源,则需要向用户发出提示,要实现这样的功能,需要订阅其对应事件
网络可用事件
//netAvailable固定事件类型 回调函数的入参是数据网络句柄NetHandle,在回调方法中可以通过NetHandle对象进行业务处理,在设备链接到可用网络时会出发网络可用事件
on(type:'netAvailable',callback:Callback:Callback<NetHandle>):void
网络阻塞状态事件
固定事件类型netBlockStatusChange,回调函数,入参是网络阻塞状态信息NetBlockStatusInfo,NetBlockStatusInfo有两个字段,分别是 netHandle和blocked。blocked是一个boolean类型的变量,表示当前网络是否是阻塞状态,网络阻塞状态事件会在建立网络连接时超时,传输数据包丢失或网络带宽不足,负载过高的场景下触发
on(type:'netBlockStatusChange',callback:Callback<NetBlockStatusInfo>):void;
网络能力变化事件
固定事件类型 netCapabilitiesChange,回调函数的入参是承载数据网络能力的实例NetCapabilityInfo,它的两个字段netHandle和netCapabilities分别表示数据网络句柄和网络能力集,当网络的能力,比如类型、带宽等能力发生变化时,会触发网络能力变化事件
on(type:'netCapabilitiesChange',callback:Callback<NetCapabilityInfo>):void;
网络连接信息变化事件
网路连接信息变化事件,固定的事件类型是netConnectionPropertiesChange,固定事件类型netConnectionPropertiesChange,回调函数入参NetConnectionPropertyInfo,表示网络连接信息,它包含两个字段,分别是数据网络句柄和网络连接属性,网络连接属性包含常用的网络连接信息,如网卡名称、域名等等,当网络连接的信息,比如IP地址、网关等发生变化时,会触发网络连接信息变化事件
on(type: 'netConnectionPropertiesChange',callback:Callback<NetConnectionPropertyInfo>):void
网络丢失事件
固定事件类型netLost 回调函数入参是数据网络句柄NetHandle,当设备失去网络连接时会触发网络丢失事件
on(type: 'netLost',callback:Callback<NetHandle>):void
网络不可用事件
网络不可用事件用netUnavailable表示,它的回调函数没有入参,在设备处于无网络状态或网络不可用的时候触发
常见事件订阅场景
四、开发实践