C# 4.0 Xamarin.Forms中的Internet连接侦听器
我是Xamarin.Forms的新手,我想在iOS和Android应用程序中检查互联网连接状态。事实上,使用CrossConnectivity插件,我能够成功地检查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
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");
};