在使用html5配合cordova做webapp時,有時需要實時監測手機的網絡 狀況。html5里面是沒有相關的js的,這時就需要在cordova里找相關插件了。
一、插件查找
1、在cordova中文網http://cordova.axuer.com/,的插件里搜索 "network-information",如下圖:
會在頁面下方出現該插件的網址:cordova-plugin-network-information
二、使用插件
1、安裝插件
在項目文件-》app文件下使用cmd調出命令框,安裝 cordova plugin add cordova-plugin-network-information
2、插件應用
2-1,得到當年網絡狀態:
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,監聽手機失去網絡連接
document.addEventListener("offline", callbackfunction, false);
2-3,監聽手機收到網絡連接以允許應用程序訪問互聯網時
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-1、手機欠費,數據流量開啟,,返回的狀態是CELL_2G 或 CELL_3G 或 CELL_4G ;
4-2,wifi有信號,實際沒有網絡。即路由器正常工作,沒有插網線。返回狀態“WiFi”
4-3,wifi有信號,但有權限,必須認證后才能連接。返回狀態也是“wifi”
這三種情況下監聽到的都是有網絡的,實際沒網絡