проверить подключение к интернету с помощью phonegap

Я вижу несколько разных вариантов проверки интернет-соединения с помощью phonegap. Есть document.addEventListener("online", onOnline, false); и есть также navigator.network.connection.type... но я не уверен, какой из них лучше всего подходит. Я также хотел бы иметь возможность предотвратить плохой случай, когда телефон подключен к сети Wi-Fi, но не имеет подключения к Интернету.

$(document).on('pagecreate','#explanation-short', function(){
     if ( isPhoneGap() ) {
    if (checkConnection() == "none" ) {
        connectionStatus = 'offline'; 
    } else {
        connectionStatus = 'online';
    }
    function checkConnection() {
        var networkState = navigator.network.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.NONE]     = 'No network connection';
        //console.log('Connection : ' + Connection);
        //console.log('Connection type: ' + states[networkState]);
        return networkState;
    }
} else {
    connectionStatus = navigator.onLine ? 'online' : 'offline';
}
    console.log("connectionStatus : "+connectionStatus);
});

Например, этот код работает, если телефон подключен к Wi-Fi, но мы не уверены, что Интернет действительно доступен.

Каковы наилучшие методы работы с phonegap 3.3+ и Jquery mobile 1.4?


person Louis    schedule 11.06.2014    source источник
comment
Вы действительно хотите изучить реализацию класса Reachability и использовать его в дополнение к работе в сети и в режиме онлайн/офлайн. Кстати, не уверен, что ваша функция checkConnection вызывается в вашем образце.   -  person gro    schedule 11.06.2014
comment
@gro Я отредактировал вопрос, спасибо.   -  person Louis    schedule 11.06.2014


Ответы (3)


Событие,

document.addEventListener("online", onOnline, false);

запускается только тогда, когда ваше приложение уже загружено и восстанавливает соединение. Это не срабатывает при запуске приложения.

Поэтому вы должны использовать метод checkConnection() при запуске вашего приложения, а затем, если вам нужно проверить позже, пока приложение работает, вы используете прослушиватель событий.

person Dawson Loudon    schedule 11.06.2014
comment
почему я не могу использовать checkConnection() где угодно и когда угодно? - person Louis; 11.06.2014
comment
Ты сможешь. Использование прослушивателя событий поймает его сразу, когда это произойдет, если вы решите вызвать другой метод, он поймает его только тогда, когда вы об этом попросите. Я хотел сказать, что вы не можете использовать прослушиватель событий при загрузке. - person Dawson Loudon; 11.06.2014

Внутри функции готовности устройства я использую следующие строки для проверки подключения к Интернету.

if(navigator.connection.type==0)
{
    alert('This application requires internet. Please connect to the internet.');

}
else if(navigator.connection.type=='none')
{
    alert('This application requires internet. Please connect to the internet.');

}
else
{
    //Hurray I'm online
}

В настоящее время это служит мне очень хорошо. Но у меня до сих пор нет такого способа обнаружить подключенный Wi-Fi, но нет интернета. Я также хотел бы знать, как это определить.

person AtanuCSE    schedule 11.06.2014
comment
Он не работает, пробовал отключать Wi-Fi, но все равно показывает онлайн. - person aB9; 29.02.2016

В Phonegap есть два прослушивателя событий «онлайн» и «офлайн». используйте их для быстрого ответа. Пожалуйста, проверьте Пример:


var internet;
document.addEventListener('online',online,false);
document.addEventListener('offline',offline,false);


function online(){

  internet=true;
}

function offline(){
 internet=false;
}

if(internet){

// internet is connected

}else{

// internet is not connected
}

для получения более подробной информации посетите http://docs.phonegap.com/en/3.0.0/cordova_events_events.md.html

person Govind Singh    schedule 13.07.2016