How to check internet connectivity type in Universal Windows Platform

后端 未结 3 1646
醉话见心
醉话见心 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.

提交回复
热议问题