Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 4.0 Xamarin.Forms中的Internet连接侦听器_C# 4.0_Xamarin.forms_Internet Connection - Fatal编程技术网

C# 4.0 Xamarin.Forms中的Internet连接侦听器

C# 4.0 Xamarin.Forms中的Internet连接侦听器,c#-4.0,xamarin.forms,internet-connection,C# 4.0,Xamarin.forms,Internet Connection,我是Xamarin.Forms的新手,我想在iOS和Android应用程序中检查互联网连接状态。事实上,使用CrossConnectivity插件,我能够成功地检查internet连接,但它不能作为侦听器工作。例如,当我打开我的应用程序,但互联网连接不存在时,它会向我显示“无互联网连接”的消息,现在如果我使用移动数据,它也会向我显示相同的消息。我正在为此使用以下代码: string isConnected=CrossConnectivity.Current.IsConnected?"Connec

我是Xamarin.Forms的新手,我想在iOS和Android应用程序中检查互联网连接状态。事实上,使用CrossConnectivity插件,我能够成功地检查internet连接,但它不能作为侦听器工作。例如,当我打开我的应用程序,但互联网连接不存在时,它会向我显示“无互联网连接”的消息,现在如果我使用移动数据,它也会向我显示相同的消息。我正在为此使用以下代码:

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

我的应用程序无法监听正在变化的互联网连接状态。

我有Android的解决方案,但我还没有开始使用ios部分 (总比没有好;) 首先创建一个广播接收器

    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;

                }
            }
        }
    }
然后在活动(例如MainActivity)中使用intent注册您的broadcastreceiver

只要您的应用程序正在运行,这项功能就会正常工作。。如果你想要一个即使你的应用程序被终止也能运行的服务,你应该创建一个服务,然后在你的服务中注册broadcastReceiver

CrossConnectivity.Current.IsReachable("localhost");

如果你下载了这个软件包,这同样有效。我还没有使用插件CrossConnectivity对其进行彻底测试,您需要通过事件ConnectionChanged监听更改,因此在您的页面或应用程序类中,添加以下代码以编写事件处理程序:

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

我是根据平台专门做的,如果你感兴趣,我可以提供答案,否则我不知道XF中是否存在..当然。我可以使用依赖服务。请为我提供一个平台特定的解决方案。如何在PCL中检查连接状态?我使用这个CrossConnectivity.Current.IsRecable(“localhost”);它返回一个布尔值。连接更改时,此事件是否会调用每个事件?我应该在何处声明此事件,以便在连接更改时触发它?这取决于您的需要,如果您只需要在页面可见时侦听更改,您可以在页面的Appearing方法中调用它。是。非常感谢。让我检查一下。在iOS上,断开连接时显示“IsConnected:true”
CrossConnectivity.Current.ConnectivityChanged += (sender, args) =>
 {
   //your implementation
  this.DisplayAlert("Connectivity Changed", "IsConnected: " + args.IsConnected.ToString(), "OK");
 };