web-dev-qa-db-ja.com

ユニバーサルWindowsプラットフォームでインターネット接続タイプを確認する方法

Windowsユニバーサルアプリケーションでインターネット接続の種類を確認したいと思います。

  1. 接続されていません
  2. WLAN(WiFi)経由で接続
  3. WWAN(セルラーデータ)経由で接続
  4. 従量制ネットワークに接続されている

大きなサイズのコンテンツをダウンロードするオプションを提供するため。また、重要なネットワーク可用性の変化を感知します。

現在、GetIsNetworkAvailableクラスのNetworkInterfaceメソッドを使用して、インターネットが接続されているかどうかを確認することしかできません。

NetworkInterface.GetIsNetworkAvailable();
23

1.インターネット接続の可用性を確認する

インターネットが接続されているかどうかを確認するには、GetIsNetworkAvailableクラスのNetworkInterfaceメソッドを使用します。

bool isInternetConnected = NetworkInterface.GetIsNetworkAvailable();

GetIsNetworkAvailable()-
概要:使用可能なネットワーク接続があるかどうかを示します。
戻り値:trueネットワーク接続が利用可能な場合。それ以外の場合は、false


2. WWLN経由のインターネット接続の可用性を確認する(WiFi)

インターネットがWWAN経由で接続されているかどうかを確認するには、IsWlanConnectionProfileクラスのConnectionProfileプロパティを使用します

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

IsWlanConnectionProfile
概要:接続プロファイルがWLAN(WiFi)接続であるかどうかを示す値を取得します。これにより、WlanConnectionProfileDetailsがnullかどうかが決まります。
Returns:接続プロファイルがWLAN(WiFi)接続を表すかどうかを示します。


3. WWAN(モバイル)経由のインターネット接続の可用性を確認する

インターネットがWWAN経由で接続されているかどうかを確認するには、IsWwanConnectionProfileプロパティof ConnectionProfileクラスを使用します

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

IsWwanConnectionProfile
概要:接続プロファイルがWWAN(モバイル)接続かどうかを示す値を取得します。これにより、WwanConnectionProfileDetailsがnullかどうかが決まります。
戻り値:接続プロファイルがWWAN(モバイル)接続を表すかどうかを示します。

参照
ヒッピーハンターの回答


4.従量制ネットワークの確認

メーター接続を介してインターネットに到達できるかどうかを確認するには、GetConnectionCostクラスでNetworkInterfaceメソッドを使用します。

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

リファレンス(詳細な回答はこちら)
1。 https://msdn.Microsoft.com/en-us/library/windows/apps/xaml/JJ835821(v = win.10).aspx
2。 https://msdn.Microsoft.com/en-us/library/windows/apps/xaml/windows.networking.connectivity.networkcosttype.aspx?cs-save-lang=1&cs-lang=csharp#code- snippet-1


5.ネットワーク可用性の変更を管理する

重要なネットワーク可用性の変化を検知するには、NetworkStatusChangedクラスのevent NetworkInformationを使用します

// 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 = "";
}

参考文献
https://developerinsider.co/check-internet-connectivity-in-uwp/https://msdn.Microsoft.com/en-us/library/ windows/apps/xaml/jj835820.aspxhttps://msdn.Microsoft.com/en-us/library/windows/apps/xaml/hh452991.aspx


それが誰かに役立つことを願っています。

46

NetworkInformation.GetInternetConnectionProfile().IsWlanConnectionProfileIsWwanConnectionProfileを使用します。どちらもtrueでない場合は、イーサネットなどを使用していることを意味するはずです。

GetInternetConnectionProfile()はnullを返す可能性があり、接続はアクティブであるがDHCPが失敗した場合に、アクティブなインターネット接続があると誤って返す可能性があることに注意してください。

4
Hippiehunter