Информация о сети
Получение информации о беспроводном подключении.
cordova-plugin-network-information
Этот плагин представляет собой реализацию старой версии API информации о сети (Network Information API). Он предоставляет информацию об устройстве:
Чтобы получить представление о том, как использовать плагин, ознакомьтесь с примером внизу этой страницы или перейдите прямо к справочному разделу.
Сообщайте о проблемах с этим плагином в системе отслеживания проблем Apache Cordova.
cordova plugin add cordova-plugin-network-information
— Amazon Fire OS;
— Android;
— BlackBerry 10;
— Browser;
— iOS;
— Windows Phone 7 и 8;
— Tizen;
— Windows;
— Firefox OS.
Объект connection
, предоставляемый через navigator.connection
, содержит информацию о сотовой и Wi-Fi соединении устройства.
Это свойство позволяет быстро определить состояние сетевого соединения устройства и тип подключения.
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();
До Cordova 2.3.0 объект Connection
был доступен через navigator.network.connection
, после чего он был изменён на navigator.connection
в соответствии со спецификацией W3C. Он всё ещё доступен по своему первоначальному местоположению, но устарел и в конечном итоге будет удалён.
navigator.connection.type
устанавливается в значение Connection.CELL
для всех данных сотовой связи.navigator.connection.type
как Connection.UNKNOWN
.navigator.connection.type
устанавливается в значение Connection.CELL
для всех сотовых данных.navigator.connection.type
как Connection.ETHERNET
.Событие срабатывает, когда приложение переходит в автономный режим, и устройство не подключено к интернету.
document.addEventListener("offline", yourCallbackFunction, false);
Событие offline срабатывает, когда ранее подключённое устройство теряет сетевое подключение, так что приложение больше не может получить доступ к интернету. Оно опирается на ту же информацию, что и API соединения, и срабатывает, когда значение connection.type становится NONE.
Приложения обычно должны использовать document.addEventListener для присоединения прослушивателя событий после срабатывания события deviceready.
document.addEventListener("offline", onOffline, false);
function onOffline() {
// Обрабатываем событие offline
}
Во время первоначального запуска первое событие offline (если применимо) срабатывает не менее чем через секунду.
При работе в эмуляторе connection.status всегда неизвестен, поэтому это событие не срабатывает.
Эмулятор сообщает о типе соединения как Cellular, который не меняется, поэтому событие не срабатывает.
Это событие срабатывает, когда приложение выходит в онлайн, и устройство подключается к интернету.
document.addEventListener("online", yourCallbackFunction, false);
Событие online срабатывает, когда ранее неподключённое устройство получает сетевое соединение, чтобы разрешить приложению доступ к интернету. Оно полагается на ту же информацию, что и Connection API, и срабатывает при изменении connection.type с NONE на любое другое значение.
Приложения обычно должны использовать document.addEventListener для прикрепления прослушивателя событий после срабатывания события deviceready.
document.addEventListener("online", onOnline, false);
function onOnline() {
// Обрабатываем событие online
}
Во время начального запуска первое событие online (если применимо) занимает не менее секунды, до этого connection.type — UNKNOWN.
При работе в эмуляторе connection.status всегда неизвестен, поэтому это событие не срабатывает.
Эмулятор сообщает о типе соединения как 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);
// Создаёт новый файл или возвращает существующий файл.
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);
Функция app's onOnline обрабатывает событие online. В обработчике событий проверьте текущее состояние сети. В этом приложении любое соединение считается хорошим, кроме Connection.NONE. Если у вас есть соединение, вы пытаетесь загрузить файл. ``` networkState = navigator.connection.type;
if (networkState !== Connection.NONE) { if (dataFileEntry) { tryToUploadFile(); } } display('Тип соединения: ' + networkState);
При возникновении онлайн-события в предыдущем коде вызывается функция `tryToUploadFile` приложения.
Если функция загрузки объекта FileTransfer завершается неудачно, вызовите функцию `offlineWrite` приложения, чтобы сохранить текущие данные где-нибудь.
> *Примечание.* Для этого примера требуется плагин FileTransfer.
```js
function tryToUploadFile() {
// !! Предполагается, что переменная fileURL содержит действительный URL текстового файла на устройстве,
var fileURL = getDataFileEntry().toURL();
var success = function (r) {
console.log("Ответ = " + r.response);
display("Загружено. Ответ: " + r.response);
};
var fail = function (error) {
console.log("Произошла ошибка: код = " + error.code);
offlineWrite("Не удалось загрузить: некоторые автономные данные");
};
var options = new FileUploadOptions();
options.fileKey = "file";
options.fileName = fileURL.substr(fileURL.lastIndexOf('/') + 1);
options.mimeType = "text/plain";
var ft = new FileTransfer();
// Убедитесь, что вы добавили домен вашего URL сервера в элемент <meta> элемента Content-Security-Policy в index.html.
ft.upload(fileURL, encodeURI(SERVER), success, fail, options);
};
Вот код для функции offlineWrite
.
Примечание. Этот пример кода требует плагин File.
function offlineWrite(offlineData) {
// Создайте объект FileWriter для нашего FileEntry.
dataFileEntry.createWriter(function (fileWriter) {
fileWriter.onwriteend = function () {
console.log("Успешная запись файла...");
display(offlineData);
};
fileWriter.onerror = function (e) {
console.log("Ошибка записи файла: " + e.toString());
};
fileWriter.write(offlineData);
});
}
Если происходит автономное событие, просто сделайте что-то вроде уведомления пользователя (в этом примере просто зарегистрируйте его).
function onOffline() {
// Обработайте автономное событие
console.log("потеряно соединение");
}
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )