How to check internet connectivity type in Universal Windows Platform

后端 未结 3 1641
醉话见心
醉话见心 2021-01-30 09:26

I would like to check internet connectivity type in Windows Universal Application.

  1. Not Connected
  2. Connected via WLAN(WiFi)
  3. Connected via WWAN(C
相关标签:
3条回答
  • 2021-01-30 09:43

    1. Check Internet Connection Availability

    To check whether any network connection is established or not use GetIsNetworkAvailable method of NetworkInterface class.

    bool isNetworkConnected = NetworkInterface.GetIsNetworkAvailable();
    

    GetIsNetworkAvailable() -
    Summary: Indicates whether any network connection is available.
    Returns: true if a network connection is available; otherwise, false.


    2. Check Internet Connection Availability via WWLN (WiFi)

    To check whether internet connected via WWAN use IsWlanConnectionProfile property of ConnectionProfile class

    ConnectionProfile InternetConnectionProfile = NetworkInformation.GetInternetConnectionProfile();
    bool isWLANConnection = (InternetConnectionProfile == null)?false:InternetConnectionProfile.IsWlanConnectionProfile;
    

    IsWlanConnectionProfile
    Summary: Gets a value that indicates if connection profile is a WLAN (WiFi) connection. This determines whether or not WlanConnectionProfileDetails is null.
    Returns: Indicates if the connection profile represents a WLAN (WiFi) connection.


    3. Check Internet Connection Availability via WWAN (Mobile)

    To check whether internet connected via WWAN use IsWwanConnectionProfile property ofConnectionProfile class

    ConnectionProfile InternetConnectionProfile = NetworkInformation.GetInternetConnectionProfile();
    bool isWLANConnection = (InternetConnectionProfile == null)?false:InternetConnectionProfile.IsWwanConnectionProfile;
    

    IsWwanConnectionProfile
    Summary: Gets a value that indicates if connection profile is a WWAN (mobile) connection. This determines whether or not WwanConnectionProfileDetails is null.
    Returns: Indicates if the connection profile represents a WWAN (mobile) connection.

    Reference
    Hippiehunter Answer


    4. Check Metered network

    To check whether Internet reachable via a metered connection or not, use GetConnectionCost method on NetworkInterface class.

    var connectionCost = NetworkInformation.GetInternetConnectionProfile().GetConnectionCost();
    if (connectionCost.NetworkCostType == NetworkCostType.Unknown 
            || connectionCost.NetworkCostType == NetworkCostType.Unrestricted)
    {
        //Connection cost is unknown/unrestricted
    }
    else
    {
       //Metered Network
    }
    

    Reference (More detailed answer here)
    1. How to manage metered network cost constraints - MSDN
    2. NetworkCostType Enum - MSDN


    5. Manage network availability changes

    To sense the significant network availability changes, use eventNetworkStatusChanged of NetworkInformation class

    // register for network status change notifications
     networkStatusCallback = new NetworkStatusChangedEventHandler(OnNetworkStatusChange);
     if (!registeredNetworkStatusNotif)
     {
         NetworkInformation.NetworkStatusChanged += networkStatusCallback;
         registeredNetworkStatusNotif = true;
     }
    
    async void OnNetworkStatusChange(object sender)
    {
        // get the ConnectionProfile that is currently used to connect to the Internet                
        ConnectionProfile InternetConnectionProfile = NetworkInformation.GetInternetConnectionProfile();
    
        if (InternetConnectionProfile == null)
        {
            await _cd.RunAsync(CoreDispatcherPriority.Normal, () =>
            {
                rootPage.NotifyUser("Not connected to Internet\n", NotifyType.StatusMessage);
            });
        }
        else
        {
            connectionProfileInfo = GetConnectionProfile(InternetConnectionProfile);
            await _cd.RunAsync(CoreDispatcherPriority.Normal, () =>
            {
                rootPage.NotifyUser(connectionProfileInfo, NotifyType.StatusMessage);
            });
        }
        internetProfileInfo = "";
    }
    

    References
    Check Internet Connectivity - developerinsider.co

    How to manage network connection events and changes in availability - MSDN

    How to retrieve network connection information- MSDN


    Hope it helpful to someone.

    0 讨论(0)
  • 2021-01-30 09:57

    I use NetworkInformation.GetInternetConnectionProfile().IsWlanConnectionProfile and IsWwanConnectionProfile. If neither is true, it should mean you're on Ethernet or something like that.

    Keep in mind thatGetInternetConnectionProfile() can return null and can falsely return that there is an active internet connection when the connection is active but DHCP has failed.

    0 讨论(0)
  • 2021-01-30 09:58

    To find if the user has any network connection whatsoever (including one without internet) I use

    public bool ConnectedToNetwork()
    {
        return NetworkInformation.GetInternetConnectionProfile()?.NetworkAdapter != null;
    }
    
    0 讨论(0)
提交回复
热议问题