Windows phone 8.1 Windows应用商店和电话检测Internet可用

Windows phone 8.1 Windows应用商店和电话检测Internet可用,windows-phone-8.1,windows-store-apps,Windows Phone 8.1,Windows Store Apps,我有一个边缘案件的问题,我希望有人可以帮助。我有一个Windows 8.1通用应用程序,正在创建一个商店和手机软件包,并尝试在它们之间共享尽可能多的代码。由于我们的应用程序需要访问互联网才能执行某些功能,因此我们需要一种可靠的方法来确定这一点,然后才尝试执行某项功能并失败 因此,最初我的代码只是查看NetworkInformation.GetInternetConnectionProfile(),然后比较getNetworkConnectionTylevel()==networkConnecti

我有一个边缘案件的问题,我希望有人可以帮助。我有一个Windows 8.1通用应用程序,正在创建一个商店和手机软件包,并尝试在它们之间共享尽可能多的代码。由于我们的应用程序需要访问互联网才能执行某些功能,因此我们需要一种可靠的方法来确定这一点,然后才尝试执行某项功能并失败

因此,最初我的代码只是查看NetworkInformation.GetInternetConnectionProfile(),然后比较getNetworkConnectionTylevel()==networkConnectionTylevel.InternetAccess。这在大多数情况下都有效,但我们在手机上发现了这样一种情况,即该设备在运营商的数据计划中,但后来被删除,因此现在只能进行wifi数据。在这种情况下,即使wifi关闭,然后无法连接,但手机似乎仍报告为真,但从未报告没有可用的互联网

所以我们把逻辑改为下面的

       var internetConnection = NetworkInformation.GetInternetConnectionProfile();

        // If null then no internet and internet connection is null
        // If it is not null, then you have to look for any GetLanIdentfiers.  This means there is a lan adapter setup.
        // lastly you have to make sure the interface type is either an Ethernet or IEEE 802.11 interface.
        if ( internetConnection != null
           && internetConnection.GetNetworkConnectivityLevel() == NetworkConnectivityLevel.InternetAccess
           && ( ( internetConnection.NetworkAdapter.IanaInterfaceType == IEEE_802_11_INTERFACE 
           && NetworkInformation.GetLanIdentifiers().Any() )
           || internetConnection.NetworkAdapter.IanaInterfaceType == ETHERNET_INTERFACE ) )
        {
           return true;
        }

        return false;
正如注释所说,如果GetInternetConnectionProfile()返回的值为null,则没有可用的连接。如果有,我会检查ineternataccess。然后我检查802.11的IANAnterFaceType和任何LAN标识符或以太网接口

在一部运营商数据计划中的手机上,这确实可以正确地检测到wifi不可用。然而,在该领域,我们现在有一些商店应用程序客户报告说,该应用程序认为没有使用上述代码的wifi。我们当然可以添加一个#If以某种方式包装逻辑,但在某种程度上,我们希望转移到新的通用应用程序项目,在该项目中使用#If应该非常罕见,因此我希望避免这种情况


我们无法在任何测试设备上复制此问题,因此这可能是我们实验室中没有的本地环境配置。是否有其他人找到可靠的方法来确定手机和商店应用程序上是否有wifi

网络信息类本身中有两个属性称为IsWwanConnectionProfileIsWlanConnectionProfile


第一个属性提供的值指示连接配置文件是否为WWAN(移动)连接,第二个属性提供的值指示连接配置文件是否为WLAN(WiFi)连接。希望这能有所帮助。

网络信息类中有两个属性,分别称为IsWwanConnectionProfileIsWlanConnectionProfile

第一个属性提供的值指示连接配置文件是否为WWAN(移动)连接,第二个属性提供的值指示连接配置文件是否为WLAN(WiFi)连接。希望这有帮助