Кордова - Проверка Wi-Fi подключения к Интернету

Я использую Cordova для разработки приложения для смартфона.

В этом приложении мне нужно проверить подключение к Интернету перед отправкой запроса на сервер.

Для этого я использую API подключения Cordova, но в случае, если устройство подключено к сети WIFI без подключения к Интернету, этот API сообщает, что у нас есть подключение WIFI,

есть ли способ проверить, доступен ли Интернет в сети WIFI?


person jusabatier    schedule 12.12.2013    source источник


Ответы (3)


Отправьте фиктивный запрос ajax перед отправкой фактического запроса. Если вы получили код ошибки как «0», это означает, что нет подключения к Интернету.

$.ajax({
    url: 'TestUrl',
    type: 'GET',
    success: function (data) {
                // Go ahead with you request
    },
    error: function (x, y, z) {
        if (x.status == 0) {
            alert("Please connect to the internet");
        }
       else{
           alert("Other Error Occured")
        }
    }
});

Во-вторых, вы также можете сделать себе навигатор HTML 5.

var condition = navigator.onLine ? "ONLINE" : "OFFLINE";
person Divesh Salian    schedule 12.12.2013
comment
Я пробовал ваше решение HTML5, но оно не работает и показывает ОНЛАЙН, когда мой Wi-Fi не обеспечивает подключение к Интернету. - person jusabatier; 12.12.2013
comment
Ваше первое решение работает, но я действительно использую его и хочу проверить соединение перед отправкой запроса AJAX, чтобы избежать длительного ожидания перед тайм-аутом AJAX. - person jusabatier; 12.12.2013
comment
var condition = navigator.onLine? ОНЛАЙН: ОФФЛАЙН; это даст статус онлайн, даже если Wi-Fi нет, но ваш Wi-Fi включен - person Rohit Tiwari; 12.12.2013
comment
@divesh Попытка отправить запрос AJAX и обработка ошибки подразумевает, что пользователь ожидает ожидания запроса AJAX до истечения времени ожидания. Я хочу знать, есть ли более быстрое решение. Похоже нет - person jusabatier; 12.12.2013
comment
Это работает и для не-Wi-Fi (3g или 4g), поэтому этот ответ не отвечает на вопрос только для Wi-Fi. - person dykstrad; 16.12.2014

Я нечасто использовал Cordova, но думаю, что он не может распознать, есть ли у вас доступ в Интернет, он просто распознает, если вы подключены к сети.

Вы можете обойти эту проблему: попробуйте отправить свой запрос и перехватить ошибку, которую вы получаете, когда он терпит неудачу, оттуда вы можете сообщить пользователю, что у него нет доступа в Интернет.

person Mario Stoilov    schedule 12.12.2013

Вы можете использовать cordova plugin add org.apache.cordova.network-information, чтобы добавить функцию Connection. Это Connection документы.

Этот плагин предоставит доступ к window.Connection.

Тогда вы можете сделать что-то вроде:

if (navigator.connection.type == Connection.NONE) {
    alert("you're going to need more internet, brah");
}

Вы также получите доступ к другим состояниям, таким как _6 _, _ 7_, WIFI и т. Д.

person lazaruslarue    schedule 16.05.2015