网络信息插件

此插件提供有关设备网络的信息。提供设备的蜂窝和WiFi连接情况 ,和设备是否有互联网。

Connection

这个Connection对象,通过navigator.connection,提供关于设备的蜂窝和WiFi连接信息。

属性:

connection.type

网络连接类型的定义

Connection.UNKNOWN
Connection.ETHERNET
Connection.WIFI 
Connection.CELL_2G
Connection.CELL_3G
Connection.CELL_4G
Connection.CELL 
Connection.NONE

connection.type

此属性提供了一个快速的方法来确定设备的网络 连接状态,和连接类型。

例子:

function checkConnection() {
    var networkState = navigator.connection.type;

    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';
    alert('Connection type: ' + states[networkState]);}
checkConnection();

注意:IOS7无法检测到蜂窝网络连接的类型;Windows8.1系统的手机总是检测navigator.connection.type作为connection.ethernet;浏览器无法检测到网络连接的类型,navigator.connection.type总是设置为connection.unknown当在线。

NetWork的相关事件

offline:

事件触发时,一个应用程序脱机,该装置是 没有连接到互联网。

这个offline事件触发时,先前连接的设备 失去网络连接,应用程序不再可以访问互联网。它依赖于相同的信息连接的API,connection.type成为NONE

应用程序应该使用document.addeventlistener对 附加一个事件侦听器一旦deviceready事件触发。

简单例子:

document.addEventListener("offline", onOffline, false);
function onOffline() {
    // Handle the offline event}

online:

online事件触发时,表示应用上线,设备成功连接到互联网。

这个online事件触发时,一个以前未连接的设备接收 网络连接允许应用程序访问互联网。 它依赖于相同的信息连接的API,connection.type变化NONE任何其他 价值。

简单例子:

document.addEventListener("online", onOnline, false);
function onOnline() {
    // Handle the online event}

注意IOS在初始启动时,第一个online事件(如适用),在这之前connection.type是UNKNOWN。

应用程序应该使用document.addeventlistener对 附加一个事件侦听器一旦deviceready事件触发。

示例:上传文件,这取决于你的网络状态

在这段代码示例显示示例应用程序使用的行为变化的在线和离线的事件和你的网络连接状态。 首先,创建一个新的fileentry对象(数据.txt)使用的样本数据。调用这个函数的deviceready处理程序。

 注意:此代码示例要求文件的插件(cordova-plugin-file)

var dataFileEntry;
function createSomeData() {

    window.requestFileSystem(window.TEMPORARY, 5 * 1024 * 1024, function (fs) {

        console.log('file system open: ' + fs.name);
        // Creates a new file or returns an existing file.
        fs.root.getFile("data.txt", { create: true, exclusive: false }, function (fileEntry) {
          dataFileEntry = fileEntry;
        }, onErrorCreateFile);
    }, onErrorLoadFs);}

下一步,添加在线和离线事件侦听器deviceready处理程序。

document.addEventListener("offline", onOffline, false);document.addEventListener("online", onOnline, false);

应用程序的在线时触发onOnline函数。在事件处理程序中,检查当前的网络状态。在这个应用程序,对待任何连接类型为好connection.none除外。如果你有一个连接,你想上传一个文件

function onOnline() {
    // Handle the online event
    var networkState = navigator.connection.type;
    if (networkState !== Connection.NONE) {
        if (dataFileEntry) {
            tryToUploadFile();
        }
    }
    display('Connection type: ' + networkState);}

当网络事件会在上面的代码中,调用应用程序的tryToUploadFile功能。

如果文件传输对象的上传功能失败,调用应用程序的offlinewrite功能保存当前数据的地方。

注意这个例子需要的文件传输插件。

function tryToUploadFile() {
    // !! Assumes variable fileURL contains a valid URL to a text file on the device,
    var fileURL = getDataFileEntry().toURL();

    var success = function (r) {
        console.log("Response = " + r.response);
        display("Uploaded. Response: " + r.response);
    }

    var fail = function (error) {
        console.log("An error has occurred: Code = " + error.code);
        offlineWrite("Failed to upload: some offline data");
    }

    var options = new FileUploadOptions();
    options.fileKey = "file";
    options.fileName = fileURL.substr(fileURL.lastIndexOf('/') + 1);
    options.mimeType = "text/plain";

    var ft = new FileTransfer();
    // Make sure you add the domain of your server URL to the
    // Content-Security-Policy <meta> element in index.html.
    ft.upload(fileURL, encodeURI(SERVER), success, fail, options);};

这里的代码offlinewrite功能。(需要文件插件)

function offlineWrite(offlineData) {
    // Create a FileWriter object for our FileEntry.
    dataFileEntry.createWriter(function (fileWriter) {

        fileWriter.onwriteend = function () {
            console.log("Successful file write...");
            display(offlineData);
        };

        fileWriter.onerror = function (e) {
            console.log("Failed file write: " + e.toString());
        };

        fileWriter.write(offlineData);
    });}

如果offline的事件发生,只是做一些像通知用户(例如,只是记录)。

function onOffline() {
    // Handle the offline event
    console.log("lost connection");}