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