2014-06-11 32 views
6

Widzę kilka różnych opcji, aby sprawdzić połączenie internetowe z phonegap. Jest document.addEventListener("online", onOnline, false); i jest też navigator.network.connection.type ... ale nie jestem pewien, która z nich jest najlepszą praktyką. Chciałbym również móc zapobiec przypadkowi, w którym telefon jest podłączony do sieci Wi-Fi, ale nie ma połączenia z Internetem.sprawdź połączenie internetowe z phonegap

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

Na przykład ten kod działa, gdy telefon jest podłączony do sieci Wi-Fi, ale nie jesteśmy pewni, czy Internet jest rzeczywiście dostępny.

Jakie są najlepsze praktyki z phonegap 3.3+ i Jquery mobile 1.4?

+1

Twój naprawdę zajrzeć do realizacji klasę osiągalności i używać, w dodatku do obsługa sieci i online/offline. btw, nie jestem pewien, czy twoja funkcja checkConnection jest wywoływana w twojej próbce. – gro

+0

@gro Edytowałem pytanie, dzięki. – Louis

Odpowiedz

7

Impreza,

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

jest zwolniony tylko wtedy, gdy aplikacja jest już jest załadowany i odzyska połączenie. To nie jest uruchamiane przy uruchomieniu aplikacji.

W związku z tym należy użyć metody checkConnection() przy uruchamianiu aplikacji, a następnie, jeśli trzeba sprawdzić później, gdy aplikacja jest uruchomiona, należy użyć detektora zdarzeń.

+0

dlaczego nie mogę używać checkConnection() w dowolnym miejscu w dowolnym czasie? – Louis

+1

Możesz. Korzystanie z detektora zdarzeń złapie go poprawnie, gdy to się stanie, jeśli zdecydujesz się na wywołanie innej metody, to tylko go złapie, gdy o to poprosisz. Chodzi mi o to, że nie można używać odbiornika zdarzeń przy obciążeniu. –

+0

ok Widzę, wielkie dzięki. – Louis

4

Wewnątrz urządzenie gotowe funkcja używam następujące wiersze w celu sprawdzenia połączenia internetowego

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 
} 

Obecnie ten służy mi całkiem dobrze. Ale nadal nie mam sposobu, aby wykryć podłączony wifi, ale nie Internet. Chciałbym również wiedzieć, jak to wykryć.

+0

Nie działa, próbował rozłączyć się z Wi-Fi, ale nadal wyświetla się w Internecie. – aB9

+0

w urządzeniu z Androidem zawsze wyświetla się w trybie offline –

0

W aplikacji Phonegap są dwa programy nasłuchujące zdarzeń "online" & "offline". wykorzystać je do wyboru przykładu szybko response.Please:


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 
} 

uzyskać więcej informacji prosimy odwiedzić http://docs.phonegap.com/en/3.0.0/cordova_events_events.md.html

Powiązane problemy