2013-07-24 5 views
8

Was ist der einfachste Weg zu überprüfen, ob das Gerät (Smartphone) online oder offline ist? Ich arbeite mit Phonegap, Jquery Mobile. Ich habe dieses gefunden.So überprüfen Sie, ob das Gerät online oder offline ist PhoneGap

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

Was ich tun möchte, ist die Internetverbindung zu prüfen und entscheiden, um die Daten aus dem Internet oder aus dem Gerät lokalen Datenbank zu erhalten.

if(deviceoffline) 
    getDataFromLokalDatabase(); 
else 
    getDataFromInternet(); 

Antwort

9

können Sie navigator.onLine verwenden:

var isOffline = 'onLine' in navigator && !navigator.onLine; 

if (isOffline) { 
    //local db 
} 
else { 
    // internet data 
} 

Aber sich bewusst sein, dass, wenn navigator.onLine nicht isOffline unterstützt wird, wird immer falsch sein

+0

Okay ich teste es normal auf Chrome-Browser und bekomme nur falsch. Aber ich baue die App mit phonegap und teste es auf meinem Smartphone und es funktioniert. Danke NULL. U hat mir sehr geholfen :) –

+0

navigator.onLine funktioniert nicht zuverlässig, zumindest nicht in meiner PhoneGapp App (Nexus 4 mit Android 5); navigator.onLine ist jedoch ein unterstütztes Attribut. Ich fand auch diese verwandte Frage: http://stackoverflow.com/questions/14283124/navigator-online-not-always-working. –

2

mit JQuery einen Ajax-Aufruf machen und überprüfen Sie den Fehlercode , Wenn der Fehlercode 0 ist, ist das Gerät offline

$.ajax({ 
    //your ajax options 
    error: function (request) { 
     if (request.status == 0) { 
      alert("you're offline"); 
     } 
    } 
}); 
+1

Status 0 bedeutet, dass der Server nicht auf die Anforderung reagiert. Das * könnte * sein, weil das Gerät offline ist, aber das bedeutet nicht unbedingt, dass es ist. – Jonathan

+0

jedoch - in den meisten Fällen interessiert Sie, ob Ihre App mit Ihrem Server kommunizieren kann ... also ist dies relevant! – hajikelist

0

Die native onLine ist etwas wackelig, vor allem in einer Web-App-Umgebung .. kann aber für eine erste Überprüfung auf pageLoad verwendet werden, aber es ist etwas nutzlos, als ob Sie zu diesem Punkt eine Internetverbindung haben.

Der Versuch, etwas zu ajaxieren, ist weitaus zuverlässiger.

10

Dies ist der Code mit nativen phonegap Code:

function checkInternet() { 

    var networkState = navigator.connection.type; 

    if(networkState == Connection.NONE) { 

     onConnexionError(); 
     return false; 

    } else { 

     return true; 
    } 
} 
+2

sollten Sie auch nach 'Connection.UNKNOWN' suchen – Mirko

1

Vorsicht, während navigator.onLine die einfachste Lösung ist, es nicht konsequent auf allen Browsern verhält. Auf Chrome wird es Ihnen sagen, dass es online ist, wenn Sie ein LAN-Kabel haben, auch wenn Sie kein Internet haben.

Sie können die cordova Plugin network-information

Sie können auch einen AJAX-Request an den Server zu machen versuchen; Normalerweise möchten Sie wissen, ob Sie offline sind, denn in diesem Fall können Sie nicht mit dem Server kommunizieren, so bedeutet "offline" oft "nicht in der Lage, mit dem Server zu kommunizieren" (was auch durch Ihren Server offline verursacht werden kann). Das Spielen mit Zeitüberschreitungen oder mehreren Anfragen ist auch nützlich, wenn Sie die Bandbreite oder die Verbindungsqualität überprüfen müssen.

Offline bedeutet nicht für jeden Anwendungsfall dasselbe, Sie müssen zuerst wissen, welche der oben genannten Techniken für Sie am besten geeignet ist, und dann eine oder mehrere von ihnen implementieren.

Was ich tun möchte, ist die Internetverbindung zu überprüfen und zu entscheiden, die Daten aus dem Internet oder aus der lokalen Datenbank des Geräts zu erhalten.

Es scheint, dass mit Ihrem Server über einen Antrag auf den Link Überprüfung ist die beste Option für Sie.

Verwandte Themen