ตรวจสอบการเชื่อมต่ออินเทอร์เน็ตด้วย phonegap

ฉันเห็นตัวเลือกต่างๆ สองสามตัวในการตรวจสอบการเชื่อมต่ออินเทอร์เน็ตด้วย phonegap มี document.addEventListener("online", onOnline, false); และยังมี navigator.network.connection.type... แต่ฉันไม่แน่ใจว่าอันไหนเป็นแนวปฏิบัติที่ดีที่สุด ฉันต้องการที่จะป้องกันกรณีที่ไม่ดีที่โทรศัพท์เชื่อมต่อกับเครือข่าย wifi แต่ไม่มีการเชื่อมต่ออินเทอร์เน็ต

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

ตัวอย่างเช่น รหัสนี้ใช้งานได้หากโทรศัพท์เชื่อมต่อกับ wifi แต่เราไม่แน่ใจว่าอินเทอร์เน็ตใช้งานได้จริง

แนวปฏิบัติที่ดีที่สุดกับ phonegap 3.3+ และ Jquery mobile 1.4 คืออะไร


person Louis    schedule 11.06.2014    source แหล่งที่มา
comment
คุณต้องการพิจารณาการนำคลาส Reachability ไปใช้จริง ๆ และใช้สิ่งนั้นนอกเหนือจากเครือข่ายและการจัดการออนไลน์/ออฟไลน์ btw ไม่แน่ใจว่าฟังก์ชัน 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
คุณสามารถ. การใช้ event Listener จะจับมันเมื่อมันเกิดขึ้น หากคุณเลือกที่จะเรียกวิธีอื่น มันจะจับมันเมื่อคุณร้องขอเท่านั้น ประเด็นของฉันคือคุณไม่สามารถใช้ตัวฟังเหตุการณ์ขณะโหลดได้ - 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
}

ปัจจุบันนี้ให้บริการฉันค่อนข้างดี แต่ฉันยังไม่มีวิธีตรวจจับ wifi ที่เชื่อมต่ออยู่ แต่ไม่มีอินเทอร์เน็ต ฉันอยากจะทราบวิธีตรวจจับด้วย

person AtanuCSE    schedule 11.06.2014
comment
มันใช้งานไม่ได้ ลองตัดการเชื่อมต่อ Wifi แล้ว แต่ยังคงแสดงออนไลน์อยู่ - 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