在使用html5配合cordova作webapp時,有時須要實時監測手機的網絡 情況。html5裏面是沒有相關的js的,這時就須要在cordova裏找相關插件了。html
一、在cordova中文網http://cordova.axuer.com/,的插件裏搜索 "network-information",以下圖:html5
會在頁面下方出現該插件的網址:cordova-plugin-network-informationreact
一、安裝插件web
在項目文件-》app文件下使用cmd調出命令框,安裝 cordova plugin add cordova-plugin-network-information
npm
二、插件應用網絡
2-1,獲得當年網絡狀態:app
var networkState = navigator.connection.type;
networkState的返回值(網絡的狀態):
var states = {}; states[Connection.UNKNOWN] = 'Unknown connection'; states[Connection.ETHERNET] = 'Ethernet connection'; states[Connection.WIFI] = 'WiFi connection'; states[Connection.CELL_2G] = 'Cell 2G connection'; states[Connection.CELL_3G] = 'Cell 3G connection'; states[Connection.CELL_4G] = 'Cell 4G connection'; states[Connection.CELL] = 'Cell generic connection'; states[Connection.NONE] = 'No network connection';
狀態值分別表明:
UNKNOWN = '未知鏈接' ; ETHERNET = '以太網鏈接' ; WIFI = ' WiFi鏈接' ; CELL_2G = '小區2G鏈接' ; CELL_3G = '小區3G鏈接' ; CELL_4G ]= '單元格4G鏈接' ; CELL = '單元格通用鏈接' ; NONE = '沒有網絡鏈接' ;
2-2,監聽手機失去網絡鏈接webapp
document.addEventListener("offline", callbackfunction, false);
2-3,監聽手機收到網絡鏈接以容許應用程序訪問互聯網時spa
document.addEventListener("online", callbackfunction, false);
3,具體示例插件
var networkFlag = true;// 默認手機聯網 var networkState = navigator.connection.type; if(networkState=='none'){// 無網 networkFlag = false; } document.addEventListener("offline", function(){ // 斷網 networkFlag = false; // 其它語句 }, false); document.addEventListener("online", function(){ // 開啓網絡 networkFlag = true; // 其它語句 }, false);
4,注意:此插件只能監聽網絡的狀態,並不能知道是否有真實的網絡。部分狀況以下:
4-一、手機欠費,數據流量開啓,,返回的狀態是CELL_2G 或 CELL_3G 或 CELL_4G ;
4-2,wifi有信號,實際沒有網絡。即路由器正常工做,沒有插網線。返回狀態「WiFi」
4-3,wifi有信號,但有權限,必須認證後才能鏈接。返回狀態也是「wifi」
這三種狀況下監聽到的都是有網絡的,實際沒網絡