Spec-Zone.ru › Cordova 8

cordova-plugin-network-information

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

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

Сообщайте о проблемах с этим плагином на следящем за ошибками Apache Cordova.

Справочная информация

Установка

cordova plugin add cordova-plugin-network-information

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

  • Android
  • Браузер
  • iOS
  • Windows

Подключение

Объект 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 8.1 всегда обнаруживает navigator.connection.type как Connection.ETHERNET.

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

  • Браузер не может определить тип сетевого подключения. 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 (если применимо) срабатывает не менее секунды.

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.

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

Примеры кода в этом разделе показывают примеры изменения поведения приложения с использованием событий 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/8.x/reference/cordova-plugin-network-information/index.html

Spec-Zone.ru

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