periksa koneksi internet dengan phonegap

Saya melihat beberapa opsi berbeda untuk memeriksa koneksi internet dengan phonegap. Ada document.addEventListener("online", onOnline, false); dan ada juga navigator.network.connection.type... tapi saya tidak yakin mana yang merupakan praktik terbaik. Saya juga ingin mencegah kasus buruk di mana ponsel terhubung ke jaringan wifi tetapi tidak memiliki koneksi internet.

$(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);
});

Misalnya kode ini berfungsi jika ponsel terhubung ke wifi, tetapi kami tidak yakin internet benar-benar tersedia.

Apa praktik terbaik dengan phonegap 3.3+ dan Jquery mobile 1.4?


person Louis    schedule 11.06.2014    source sumber
comment
Anda benar-benar ingin mempertimbangkan penerapan kelas Reachability, dan menggunakannya selain jaringan dan penanganan online/offline. btw, tidak yakin apakah fungsi checkConnection Anda dipanggil dalam sampel Anda.   -  person gro    schedule 11.06.2014
comment
@gro Saya mengedit pertanyaannya, terima kasih.   -  person Louis    schedule 11.06.2014


Jawaban (3)


Acara,

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

hanya diaktifkan ketika aplikasi Anda sudah dimuat dan mendapatkan kembali koneksi. Ini tidak diaktifkan saat aplikasi dimulai.

Oleh karena itu, Anda harus menggunakan metode checkConnection() pada awal aplikasi Anda dan kemudian jika Anda perlu memeriksanya nanti saat aplikasi sedang berjalan, Anda menggunakan pendengar acara.

person Dawson Loudon    schedule 11.06.2014
comment
mengapa saya tidak bisa menggunakan checkConnection() di mana pun dan kapan pun? - person Louis; 11.06.2014
comment
Kamu bisa. Menggunakan pendengar acara akan menangkapnya tepat ketika itu terjadi, jika Anda memilih untuk memanggil metode lain, maka metode itu hanya akan menangkapnya ketika Anda memintanya. Maksud saya adalah Anda tidak dapat menggunakan pendengar acara saat memuat. - person Dawson Loudon; 11.06.2014

Di dalam fungsi perangkat siap, saya menggunakan baris berikut untuk memeriksa koneksi internet

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
}

Saat ini hal ini cukup membantu saya. Tapi saya masih belum punya cara untuk mendeteksi wi-fi yang terhubung, tapi tidak ada internet. Saya juga ingin tahu cara mendeteksinya.

person AtanuCSE    schedule 11.06.2014
comment
Tidak berfungsi, coba putuskan sambungan Wifi tetapi masih terlihat online. - person aB9; 29.02.2016

Di Phonegap ada dua event pendengar 'online' & 'offline'. gunakan untuk respon cepat. Silakan periksa Contoh:


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
}

untuk lebih jelasnya silakan kunjungi http://docs.phonegap.com/en/3.0.0/cordova_events_events.md.html

person Govind Singh    schedule 13.07.2016