2013-08-10 10 views
6

私はphonegap(cordova)3.0.0でアプリケーションを作成しています。イベントは「オンライン」と「オフライン」は機能しません。イベント「再開」を試みたとき、このイベントはOKでした。私はXCode 4.5とIOSを使用しています。Phonegapイベントはオンライン/オフラインでは動作しません

これは、PhoneGapのプロジェクトの私のメインのJavaScriptファイルです:アドバイス

答えて

2

これらのイベントのために

var app = { 

    initialize: function() { 
     this.bindEvents(); 
    }, 
    // Bind Event Listeners 
    // 
    // Bind any events that are required on startup. Common events are: 
    // 'load', 'deviceready', 'offline', and 'online'. 
    bindEvents: function() { 
     document.addEventListener('deviceready', this.onDeviceReady, false); 
     document.addEventListener('online', this.onDeviceOnline, false); 
     document.addEventListener('resume', this.onDeviceResume, false); 
    }, 

    onDeviceReady: function() { 
     app.receivedEvent('deviceready'); 
    }, 

    onDeviceOnline: function() { 
     app.receivedEvent('deviceonline'); 
    }, 

    onDeviceResume: function() { 
     app.receivedEvent('deviceresume'); 
    }, 

    receivedEvent: function(id) { 
     var parentElement = document.getElementById(id); 
     var listeningElement = parentElement.querySelector('.listening'); 
     var receivedElement = parentElement.querySelector('.received'); 

     listeningElement.setAttribute('style', 'display:none;'); 
     receivedElement.setAttribute('style', 'display:block;'); 

     console.log('Received Event: ' + id); 
    } 
}; 

感謝、彼らはDeviceReadyイベントの前には動作しません内部の「onDeviceReady」バインドする必要があります。このAttach an event listener once the deviceready event fires

bindEvents: function() { 
    document.addEventListener('deviceready', this.onDeviceReady, false); 
    document.addEventListener('resume', this.onDeviceResume, false); 
}, 

onDeviceReady: function() { 
    app.receivedEvent('deviceready'); 
    document.addEventListener('online', this.onDeviceOnline, false); 
}, 

これらのイベントはのみ解雇、アプリが起動したときに、オンライン/オフラインイベントが発生しませんのでご注意ください際の接続状態の変化を確認してください。アプリケーションがオンラインモードで起動すると、オフラインになるまで、オンラインイベントと同じように、オフラインイベントはトリガーされません。

現在の接続性を確認するには、あなたがあなたのプロジェクトに接続プラグインを追加する必要がありますし、このイベントが発行されます以下のコード

onDeviceReady: function() { 
    app.receivedEvent('deviceready'); 
    document.addEventListener('online', this.onDeviceOnline, false); 
    if((navigator.network.connection.type).toUpperCase() != "NONE" && 
     (navigator.network.connection.type).toUpperCase() != "UNKNOWN") { 
     this.onDeviceOnline(); 
    } 
} 
+1

私はそれを試してみましたが、それでも動作しません。再開、または一時停止のみOKです。 – user2374693

+2

どのようにイベントをチェックしていますか?これらのイベントはアプリの起動時には発生せず、接続状態が変化したとき(アプリがオンラインのとき、開始時、システムがオフラインになったとき、オフラインイベントが発生したとき、またはその逆のとき)にのみ起動します。現在の接続状況を確認する必要がある場合は、更新された回答を参照してください。 –

+0

将来の参考として、 phonegap 3.0以降、「ネットワーク」はなくなりました。今は "navigator.connection.type"です。 詳細については、ドキュメントを参照してください。 http://docs.phonegap.com/en/edge/cordova_connection_connection.md.html – NoobishPro

0

を使用する必要があります。

コマンド次の接続プラグインの使用を追加する:

CMD> phonegap local plugin add https://git-wip-us.apache.org/repos/asf/cordova-plugin-network-information.git 
8

あなたがいることを追加した後、コマンドプロンプト

$ phonegap local plugin add org.apache.cordova.network-information 

で最初のプラグインのネットワーク情報を追加する必要があり、オンライン/オフラインの状態を表示したい場合はあなたのオンライン/オフラインイベントが機能するはずです。

+1

コルドバの使用の場合:cordova pluginはorg.apache.cordovaを追加します。ネットワーク情報 –

+0

はうまくいきますが、オフラインイベントが2回スローされます – Abhishek

2

corodova(phonegapではない)では、この方法でプラグインを追加する必要があります:で

phonegap plugin add org.apache.cordova.network-information 

index.html

var app = {}; 
app.initialize = function() { 
    document.addEventListener("online", function(){alert('online : true') }, false); 
    document.addEventListener("offline", function(){alert('online : false') }, false); 
}; 

、どこか:PhoneGapのフォルダのプロジェクトで3210
cordova plugin add org.apache.cordova.network-information

0

<script type="text/javascript"> 
app.initialize(); 
</script> 
+0

なぜこの方法でデバイスのオフラインまたはオンライン状態で機能が2回トリガーされますか? –

関連する問題