Spec-Zone.ru › Cordova 6

cordova-plugin-network-information

Этот плагин предоставляет реализацию старой версии API информации о сети. Он предоставляет информацию о сотовой и Wi-Fi связи устройства, а также о наличии интернет-соединения.

Для получения нескольких идей о том, как использовать плагин, ознакомьтесь с примером sample внизу этой страницы или перейдите непосредственно к содержанию справочника.

Сообщайте о проблемах с этим плагином на отслеживателе проблем Apache Cordova.

Справочник

Установка

cordova plugin add cordova-plugin-network-information

Поддерживаемые платформы

  • Amazon Fire OS
  • Android
  • BlackBerry 10
  • Браузер
  • iOS
  • Windows Phone 7 и 8
  • Tizen
  • Windows
  • Firefox OS

Подключение

Объект connection, доступный через navigator.connection, предоставляет информацию о сотовой и Wi-Fi связи устройства.

Свойства

  • 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();

Изменение API

До версии Cordova 2.3.0, к объекту Connection был доступ через navigator.network.connection, после чего он был изменен на navigator.connection, чтобы соответствовать спецификации W3C. Он по-прежнему доступен по своему первоначальному расположению, но устарел и в конечном итоге будет удален.

Особенности iOS

  • <iOS7 не может определить тип сотового сетевого соединения.
    • navigator.connection.type устанавливается в Connection.CELL для всех сотовых данных.

Особенности Windows Phone

  • При работе в эмуляторе всегда обнаруживает navigator.connection.type как Connection.UNKNOWN.

  • Windows Phone не может определить тип сотового сетевого соединения.

    • navigator.connection.type устанавливается в Connection.CELL для всех сотовых данных.

Особенности Windows

  • При работе в эмуляторе Phone 8.1 всегда обнаруживает navigator.connection.type как Connection.ETHERNET.

Особенности Tizen

  • Tizen может обнаруживать только Wi-Fi или сотовую связь.
    • navigator.connection.type устанавливается в Connection.CELL_2G для всех сотовых данных.

Особенности Firefox OS

  • Firefox OS не может определить тип сотового сетевого соединения.
    • navigator.connection.type устанавливается в Connection.CELL для всех сотовых данных.

Особенности браузера

  • Браузер не может обнаружить тип сетевого соединения. navigator.connection.type всегда устанавливается в Connection.UNKNOWN при подключении к сети.

Сетевые события

offline

Событие срабатывает, когда приложение выходит из автономного режима и устройство не подключено к Интернету.

document.addEventListener("offline", yourCallbackFunction, false);

Подробности

Событие offline срабатывает, когда устройство, которое ранее было подключено, теряет сетевое соединение, из-за чего приложение больше не может получить доступ к Интернету. Оно использует ту же информацию, что и API подключения, и срабатывает, когда значение connection.type становится NONE.

Приложения обычно должны использовать document.addEventListener для добавления обработчика события, как только произойдет событие deviceready.

Быстрый пример

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

function onOffline() {
    // Handle the offline event
}

Особенности iOS

Во время первоначального запуска первое событие offline (если применимо) срабатывает не раньше, чем через секунду.

Особенности Windows Phone 7

При работе в эмуляторе тип подключения connection.status всегда неизвестен, поэтому это событие не срабатывает.

Особенности Windows Phone 8

Эмулятор сообщает о типе подключения как Cellular, который не изменяется, поэтому событие не срабатывает.

online

Это событие срабатывает, когда приложение выходит в онлайн-режим и устройство подключается к Интернету.

document.addEventListener("online", yourCallbackFunction, false);

Подробности

Событие online срабатывает, когда ранее отключенное устройство получает сетевое подключение, позволяющее приложению получить доступ к Интернету. Оно опирается на ту же информацию, что и API подключения, и срабатывает, когда значение connection.type изменяется с NONE на любое другое значение.

Приложения обычно должны использовать document.addEventListener для добавления обработчика события, как только произойдет событие deviceready.

Быстрый пример

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

function onOnline() {
    // Handle the online event
}

Особенности iOS

Во время первоначального запуска первое событие online (если применимо) срабатывает не раньше, чем через секунду, до этого connection.type равно UNKNOWN.

Особенности Windows Phone 7

При работе в эмуляторе connection.status всегда неизвестен, поэтому это событие не срабатывает.

Особенности Windows Phone 8

Эмулятор сообщает о типе подключения как Cellular, который не изменяется, поэтому событие не срабатывает.

Пример: Загрузка файла в зависимости от состояния вашей сети

Примеры кода в этом разделе демонстрируют примеры изменения поведения приложения с использованием событий online и offline и состояния вашего сетевого подключения.

Для начала создайте новый объект FileEntry (data.txt) для использования в качестве тестовых данных. Вызовите эту функцию из обработчика deviceready.

Примечание Этот пример кода требует плагина 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);
}

Далее, добавьте обработчики для событий online и offline в обработчике deviceready.

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

Функция приложения onOnline обрабатывает событие online. В обработчике события проверьте текущее состояние сети. В этом приложении любой тип подключения считается подходящим, за исключением Connection.NONE. Если подключение есть, вы попытаетесь загрузить файл.

function onOnline() {
    // Handle the online event
    var networkState = navigator.connection.type;

    if (networkState !== Connection.NONE) {
        if (dataFileEntry) {
            tryToUploadFile();
        }
    }
    display('Connection type: ' + networkState);
}

При срабатывании события online в предыдущем коде вызовите функцию приложения tryToUploadFile.

Если функция загрузки объекта FileTransfer завершится ошибкой, вызовите функцию приложения offlineWrite для сохранения текущих данных где-либо.

Примечание Этот пример требует плагина FileTransfer.

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.

Примечание Этот пример кода требует плагина File.

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");
}

© 2012, 2013, 2015 The Apache Software Foundation
Licensed under the Apache License 2.0.
https://cordova.apache.org/docs/en/6.x/reference/cordova-plugin-network-information/index.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API