2016-09-15 10 views
0

私はイオンフレームワークのAndroidアプリを開発しており、インターネット接続を確認する必要がありますが、着実に確認しています。たとえば、ユーザーがログインしていて接続がない場合は、メッセージまたはメッセージを表示したいと考えています。私は何か考えました。インターネット接続を常に確認する

<div class="bar bar-subheader" id="alerta_no_internet" ng-show="!online"> 
    <p>Not connected to Internet </p> 
</div 

何もしていないのは、何かのサービスか、常に接続について何か質問がある場合です。

答えて

1

このついて行くのいくつかの方法があります。

  1. あなたは、サーバー上の資産(多分1px x 1pxGIF画像)を保存し、常にこの(連続リクエストごとx秒)のポーリングを維持することができます。もちろん、あなたはこのイメージがキャッシュされていないことを確認したいと思います。要求が失敗した場合は、ネットワークが利用できないとみなすことができます。これは簡単に実装できますが、ポーリングでは多数のHTTPヘッダーが送信されるため、効率的ではありません。
  2. これははるかに効率的です - クライアントとサーバーにWebSocket接続を実装し、アプリケーションを開くとソケットを開きます。ソケットが破棄された場合は、Connectivity Lostメッセージを表示できます。これは、HTTPリクエストを繰り返し送信する必要はありません。これははるかに効率的ですが、これを実装するためにより多くの作業が必要になります。

これらのいずれかのサービスをIonicで記述することができます。それは最も簡単ですが、オプション#1が可能で

setInterval(ajaxCall, 3000); //3000 MS == 3 sec 

function ajaxCall() { 
    $.ajax('/testConnectivityUrl').then(function(response) { 
    console.log("Still connected"); 
    }, function(err) { 
    console.log("Lost connection"); 
    } 
} 

私はjQueryのを使用しましたが、あなたはバニラJSや角度やイオンのサービスや工場でこれを行うことができます。

+0

私は非常に頻繁に機能を実行できますか? – sioesi

+0

である。最も単純なレベルでは、次のような関数を実行することができます: '' 'setInterval(ajaxCall、3000); // 3000 MS == 3秒 関数ajaxCall(){ //ここでAJAXの処理を行う } '' ' – nikjohn

1

イオンフレームワークについてよくわかりませんが、AndroidフレームワークのConnectivityManagerbroadcast on connectivity changesを放出しています。あなたはこれらの変更をリッスンするBroadcastReceiverを実装できます。

<receiver android:name=".ConnectivityReceiver"> 
    <intent-filter> 
     <action android:name="android.net.conn.CONNECTIVITY_CHANGE"/> 
    </intent-filter> 
</receiver> 

その後state of the networkを監視するためにConnectivityManagerにアクセス:

public class ConnectivityReceiver extends BroadcastReceiver { 

    @Override 
    public void onReceive(Context context, Intent intent) { 
     ConnectivityManager manager = 
       (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); 

     NetworkInfo info = manager.getActiveNetworkInfo(); 

     // TODO: monitor state using NetworkInfo 

    } 

} 

あなたが同様にManifestにインターネットとネットワーク状態の許可を宣言していることを確認してください:

<uses-permission android:name="android.permission.INTERNET"/> 
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> 

接続の変更が頻繁に発生する可能性があることに注意してくださいそれらを監視することは費用がかかることがあります。あなたはそれが必要とされるときにだけにtoggle this receiverべきベストプラクティスによると:

をそれまで一般的に十分だ単にアップデートを開始する前に、インターネット接続 をチェックし、何があってはならない、接続が回復するまで、さらに 更新を一時停止。

関連する問題