一、網絡狀態概述
上述任一指標的變化均可視為網絡狀態的改變
二、獲取網絡信息
創建網絡對象
//創建網絡對象
//?表示可傳可不傳
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表示,它的回調函數沒有入參,在設備處于無網絡狀態或網絡不可用的時候觸發
常見事件訂閱場景
四、開發實踐