2016-11-07 23 views
3

Xamarin.Formsの新機能です.iOSとAndroidアプリでインターネット接続の状態を確認したいと思います。実際にはCrossConnectivityプラグインを使用して、私はインターネット接続を正常にチェックすることができますが、リスナーとしては機能していません。たとえば、私は私のアプリを開き、インターネット接続がそこにない場合、それは私にメッセージが表示されます "いいえインターネット接続"と今私は私の携帯データをオンにしても同じメッセージを表示します。私はこれのために以下のコードを使用しています:Xamarin.Formsのインターネット接続リスナー

string isConnected=CrossConnectivity.Current.IsConnected?"Connected":"No Connection"; 

私のアプリは中間のものでインターネット接続の変化する状況を聴くことができません。 (中 まず、あなたの活動の意図を持って、あなたのbroadcastreceiverを登録broadcastReceiver

public class Localize: BroadcastReceiver 
    { 
     public static Context context; 

     public Localize(Context ctx) 
     { 
      context = ctx; 
     } 
     public override void OnReceive (Context context, Intent intent) 
     { 
      isNetworkAvailable (context); 
     } 

    public void isNetworkAvailable(Context context) 
    { 
     Boolean state = false; 
     ConnectivityManager connectivity = (ConnectivityManager) 
      context.GetSystemService(Context.ConnectivityService); 
     if (connectivity != null) 
     { 
      NetworkInfo[] info = connectivity.GetAllNetworkInfo(); 
      foreach (NetworkInfo nwork in info) 
      { 
       if (nwork.GetState() == NetworkInfo.State.Connected) { 

        ConnectionDetected();//Execute your fonction here 
        break; 

       } 
      } 
     } 
    } 

を作成します。

+0

興味があれば私はそれをplateformごとに具体的に行いました。答えが得られない場合は、XFに存在するかどうかわかりません。 –

+0

確か。私は依存関係サービスを使うことができます。同じプラットフォーム固有の解決策を私に教えてください。 – Dipak

答えて

3

イベントハンドラを記述するためにこのコードを追加し、あなたのページやAppクラスのようにあなたは、イベントConnectivityChanged経由の変化に耳を傾ける必要があります。

CrossConnectivity.Current.ConnectivityChanged += (sender, args) => 
{ 
    //your implementation 
    this.DisplayAlert("Connectivity Changed", "IsConnected: " + args.IsConnected.ToString(), "OK"); 
}; 
+0

を返します。このイベントは、接続が変更されたときに1つのイベントが呼び出されますか? – Dipak

+0

接続が変更されたときにこのイベントが発生するように宣言する必要がありますか? – Dipak

+0

必要に応じて、ページが表示されている間だけ変更を聞く必要がある場合は、ページのOnAppearingメソッドで呼び出すことができます。 – Hichaam

1

は、私は、Androidのためのソリューションを持っているが、私は一部 が(何もないよりはまし)IOSの作業を開始していません例えばMainActivity)

IntentFilter filter = new IntentFilter(ConnectivityManager.ConnectivityAction); 
receiver = new Localize(this); 
RegisterReceiver(receiver, filter); 

これは、限り、あなたのアプリケーションは、あなたのアプリが殺されても実行されるサービスをしたい場合は、サービスを作成する必要があります。..実行した後、REGされるように動作するはずですあなたのサービスでister broadcastReceiver ..プラグインCrossConnectivityを使用して

+0

PCLの接続状態を確認する方法は? – Dipak

+0

私はこれでこれを行います CrossConnectivity.Current.IsReachable( "localhost"); ブール値 –

関連する問題