Spec-Zone.ru › Cordova 7

cordova-plugin-network-information

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

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

Сообщайте о проблемах с этим плагином на трекере проблем 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/7.x/reference/cordova-plugin-network-information/index.html

Spec-Zone.ru

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