Windows 10移动UWP应用程序更喜欢通过wifi的蜂窝数据。如何处理多个网络连接

时间:2017-06-06 19:09:40

标签: c# mobile windows-10 windows-10-universal windows-10-mobile

我有Windows 10移动应用程序。前几天我注意到我的一些服务器通信和网络访问调用/代码都失败了。我使用的移动设备在设置中打开了蜂窝数据和Wifi选项。我连接到我的Wifi就好了。但是,此设备上未激活蜂窝数据。它显示蜂窝电话已打开并显示一些条形图,但服务未通过运营商激活。

在故障排除期间,我在设置中关闭了蜂窝数据选项,一旦我这样做,我的所有服务器和网络访问代码都重新开始工作(即不抛出异常)。

我一直在寻找一段时间,并且无法找到我的假设的答案,即当手机上的蜂窝数据和wifi都打开时,即使手机无法工作,Windows 10 Mobile也会默认使用手机。这是真的?也许更好的问题是,当您启用两个数据连接源时,设备如何处理?它如何选择使用哪一个?

也许后续问题也是,我如何强迫它使用其中一个?我在研究过程中看到过很多关于如何检测哪个网络连接处于活动状态的代码,但是关于如果有多个网络连接处于活动状态会发生什么以及如何强制操作系统使用其中一个的情况的信息不多。如果我想将我的呼叫从wifi无缝切换到蜂窝电话,这可能会派上用场。例如,喜欢wifi并使用wifi,但如果你超出了wifi的范围,那么切换到手机。

谢谢!

1 个答案:

答案 0 :(得分:2)

当我们连接Wifi时,无论蜂窝数据是否开启,UWP应用都将使用WIFI。

您可以使用以下代码检查您的UWP应用程序使用移动数据还是Wifi,您还可以检查当前网络的信号级别。

ConnectionProfile profile = Windows.Networking.Connectivity.NetworkInformation.GetInternetConnectionProfile();
if (profile.GetNetworkConnectivityLevel() == NetworkConnectivityLevel.InternetAccess)
{
    Debug.WriteLine("InternetAccess");
}
var signal = profile.GetSignalBars();
Debug.WriteLine("signal is:"+signal);
if (profile.IsWlanConnectionProfile)
{
    Debug.WriteLine("Wifi");
}
else if (profile.IsWwanConnectionProfile)
{
    Debug.WriteLine("Cellular");
}

如果在设置中启用了蜂窝数据和Wifi选项并且它们已连接,则ConnectionProfile.IsWwanConnectionProfile将返回true。

当Wifi断开连接时,它将自动使用Cellular数据。我们无法通过代码强制UWP应用程序使用移动数据或Wifi。我们可以添加NetworkInformation.NetworkStatusChanged,它会在网络状态更改为连接时发生。当Wifi断开连接时,事件将被触发,ConnectionProfile.IsWwanConnectionProfile将返回true。