15

私はPhonegapで働いています。ネットワーク接続を定期的に確認する必要があります。実際、私はサーバーからいくつかのデータを取得しています。接続がない場合は、エラー アラートを表示する必要があります。

私はそれをグーグルで検索し、解決策を見つけました。しかし、それは大丈夫ではありません。定期的に接続を確認する必要があるためです。

<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>

アプリケーションの初回起動時にのみチェックします。ただし、ソケットプログラミングを行っているため、定期的に確認する必要があります。インターネットに問題がある場合は、それを示す必要があります。ただし、このコードは起動時にのみ表示されます。

4

4 に答える 4

26

作業例: http://jsfiddle.net/Gajotres/d5XYR/

インターバルタイマーを使用して、定義済みの時間ごとにインターネット接続を確認します。このソリューションには HTML5 ブラウザーが必要ですが、jQuery Mobile には既に HTML5 ブラウザーが必要であるため、これは問題ではありません。この場合、タイマーは 100 ミリ秒ごとにインターネット接続をチェックし、最終結果を JavaScript グローバル変数に設定します。

すべてはこの行に依存します:

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

最終的解決:

var connectionStatus = false;

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

テスト済み:

  • Windows ファイアフォックス

  • ウィンドウズ グーグルクローム

  • Windows IE9 および IE10

  • Android 4.1.1 クローム

  • iPad3 サファリ

  • iPad3 クローム

于 2013-06-29T07:09:55.527 に答える
6

ドキュメントで説明されているように、ドキュメントで「オンライン」および「オフライン」イベントリスナーを使用して、オンラインまたはオフラインになったときにアプリに通知することができます。ここ: http://docs.phonegap.com/en/3.2.0/cordova_events_events.md.html#online

于 2013-12-03T13:11:42.037 に答える