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