我们正在开发一个在iOS和OSX之间使用临时连接的应用程序。 不幸的是,我们无法使用自组织网络将两个设备同时连接到对等连接中,而只能在基础设施wifi上正常工作。 我们在OS X Yosemite中检查了连接,并且在两个网络中都能正常工作。 在OS X El Capitan和更高版本上,它 ...
提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供 中文繁体 英文版本 中英对照 版本,有任何建议请联系yoyou2525@163.com。
万一网络连接没有打开以检查它是否关闭,那么我就使用了连接插件。
我在ViewModelLocator类中调用此代码
Private static async void NetworkConnectivityChanged(object sender,Plugin.Connectivity.Abstractions.ConnectivityChangedEventArgs e){}
CrossConnectivity.Current.ConnectivityChanged = NetworkConnectivityChanged;
导航后,在我的Windows应用程序中是否更改了网络连接状态…在此事件不会触发,但是如果不使用导航,我们会更改网络状态,并且它正在运行。
解决方法是在Winphone或UWP端实现本机网络更改处理程序 ,并停止仅在Winphone和UWP的PCL端处理网络更改。 您可以通过在处理之前检查平台来做到这一点。
使用以下代码创建一个新的Network.cs类(它检测网络连接是否发生任何变化)
public class InternetConnectionChangedEventArgs : EventArgs
{
public InternetConnectionChangedEventArgs(bool isConnected)
{
this.isConnected = isConnected;
}
public bool IsConnected
{
get { return this.isConnected; }
}
private bool isConnected;
}
public static class Network
{
public static event EventHandler<InternetConnectionChangedEventArgs>
InternetConnectionChanged;
static Network()
{
NetworkInformation.NetworkStatusChanged += (s) =>
{
if (InternetConnectionChanged != null)
{
var arg = new InternetConnectionChangedEventArgs(IsConnected);
InternetConnectionChanged(null, arg);
}
};
}
public static bool IsConnected
{
get
{
var profile = NetworkInformation.GetInternetConnectionProfile();
var isConnected = (profile != null
&& profile.GetNetworkConnectivityLevel() ==
NetworkConnectivityLevel.InternetAccess);
return isConnected;
}
}
}
然后在UWP或WinPhone中的app.xaml.cs中,在OnLaunched事件中注册网络更改处理程序,如下所示
Network.InternetConnectionChanged += this.Network_InternetConnectionChanged;
这是事件处理程序
private void Network_InternetConnectionChanged(object sender,InternetConnectionChangedEventArgs e)
{
if(e.IsConnected){
///code to handle when the internet connectivity is there
}
else{
//code to handle when the internet connectivity is lost
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.