Spec-Zone.ru › Cordova 9

cordova-plugin-network-information

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

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

Установка

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/9.x/reference/cordova-plugin-network-information/index.html

Spec-Zone.ru

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