Frage Wie überprüfe ich regelmäßig die Internetverbindung in Phonegap?


Ich arbeite mit Phonegap. Ich muss die Netzwerkverbindung regelmäßig überprüfen. Eigentlich bekomme ich Daten von einem Server. Wenn keine Verbindung besteht, muss ich eine Fehlermeldung anzeigen.

Ich habe es gegoogelt und die Lösung gefunden. Aber es ist nicht ok. Weil ich die Verbindung regelmäßig überprüfen muss.

<html>
  <head>
    <title>navigator.network.connection.type Example</title>
    <script type="text/javascript" charset="utf-8" src="phonegap-1.0.0.js"></script>
    <script type="text/javascript" charset="utf-8">
    // Wait for PhoneGap to load
    document.addEventListener("deviceready", onDeviceReady, false);
    function onDeviceReady() {
        checkConnection();
    }

    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';
        alert('Connection type: ' + states[networkState]);
    }
    </script>
  </head>
  <body>
    <p>A dialog box will report the network state.</p>
  </body>
</html>

Es überprüft nur das erste Mal, wenn die Anwendung gestartet wird. Aber ich muss es regelmäßig überprüfen, weil ich Socket-Programmierung mache. Wenn es ein Problem mit dem Internet gibt, muss ich es zeigen. Aber dieser Code zeigt nur zur Startzeit.


15
2018-06-29 06:51


Ursprung


Antworten:


Arbeitsbeispiel: http://jsfiddle.net/Gajotres/d5XYR/

Verwenden Sie den Intervall-Timer, um die Internetverbindung zu jeder vordefinierten Zeit zu überprüfen. Diese Lösung erfordert einen HTML5-Browser, dies ist jedoch kein Problem, da jQuery Mobile bereits den HTML5-Browser benötigt. In diesem Fall überprüft der Timer alle 100 ms die Internetverbindung und setzt das Endergebnis in eine globale javascript-Variable.

Alles hängt von dieser Linie ab:

window.navigator.onLine -- it will be false if the user is offline.

Endgültige Lösung:

var connectionStatus = false;

$(document).on('pagebeforeshow', '#index', function () {
    setInterval(function () {
        connectionStatus = navigator.onLine ? 'online' : 'offline';
    }, 100);
    $(document).on('click', '#check-connection', function () {
        alert(connectionStatus);
    });
});

Getestet am: 

  • Windows Firefox

  • Windows Google Chrome

  • Windows IE9 und IE10

  • Android 4.1.1 Chrome

  • iPad 3 Safari

  • iPad3 Chrome


26
2018-06-29 07:09



Vielleicht könnten Sie die Online- und Offline-Ereignis-Listener im Dokument verwenden, um Ihre App zu benachrichtigen, wenn sie online oder offline wird, wie in den Dokumenten z. Hier: http://docs.phonegap.com/de/3.2.0/cordova_events_events.md.html#online


6
2017-12-03 13:11



Leider ist die Antwort in Chrome und Safari sowie in einigen mobilen Browsern nicht stabil. Es gibt Ihnen nicht den Status "echte Internetverbindung", sondern den Status "Netzwerkverbindung". Sehen:

https://developer.mozilla.org/en-US/docs/Web/API/window.navigator.onLine

"Wenn der Browser in Chrome und Safari keine Verbindung zu einem lokalen Netzwerk (LAN) oder einem Router herstellen kann, ist er offline, alle anderen Bedingungen sind wahr. Wenn Sie also davon ausgehen, dass der Browser offline ist, wenn er zurückgibt, a Falscher Wert, Sie können nicht davon ausgehen, dass ein echter Wert bedeutet, dass der Browser auf das Internet zugreifen kann, zB wenn der Computer eine Virtualisierungssoftware mit virtuellen Ethernet-Adaptern ausführt, die immer "verbunden" sind. "Wenn Sie also wirklich den Online-Status des Browsers ermitteln möchten, sollten Sie zusätzliche Mittel zum Überprüfen entwickeln. Weitere Informationen finden Sie im Artikel HTML5 Rocks, Arbeiten außerhalb des Rasters."

Sehen Sie diesen HTML5 Rocks Artikel für eine echte stabile Lösung - mehr Arbeit natürlich:

http://www.html5rocks.com/de/mobile/workingofftgrid/


4
2017-08-22 17:56