Windowsユニバーサルアプリケーションでインターネット接続の種類を確認したいと思います。
大きなサイズのコンテンツをダウンロードするオプションを提供するため。また、重要なネットワーク可用性の変化を感知します。
現在、GetIsNetworkAvailable
クラスのNetworkInterface
メソッドを使用して、インターネットが接続されているかどうかを確認することしかできません。
NetworkInterface.GetIsNetworkAvailable();
インターネットが接続されているかどうかを確認するには、GetIsNetworkAvailable
クラスのNetworkInterface
メソッドを使用します。
bool isInternetConnected = NetworkInterface.GetIsNetworkAvailable();
GetIsNetworkAvailable()-
概要:使用可能なネットワーク接続があるかどうかを示します。
戻り値:true
ネットワーク接続が利用可能な場合。それ以外の場合は、false
。
インターネットがWWAN経由で接続されているかどうかを確認するには、IsWlanConnectionProfile
クラスのConnectionProfile
プロパティを使用します
ConnectionProfile InternetConnectionProfile = NetworkInformation.GetInternetConnectionProfile();
bool isWLANConnection = (InternetConnectionProfile == null)?false:InternetConnectionProfile.IsWlanConnectionProfile;
IsWlanConnectionProfile
概要:接続プロファイルがWLAN(WiFi)接続であるかどうかを示す値を取得します。これにより、WlanConnectionProfileDetailsがnullかどうかが決まります。
Returns:接続プロファイルがWLAN(WiFi)接続を表すかどうかを示します。
インターネットがWWAN経由で接続されているかどうかを確認するには、IsWwanConnectionProfile
プロパティof ConnectionProfile
クラスを使用します
ConnectionProfile InternetConnectionProfile = NetworkInformation.GetInternetConnectionProfile();
bool isWLANConnection = (InternetConnectionProfile == null)?false:InternetConnectionProfile.IsWwanConnectionProfile;
IsWwanConnectionProfile
概要:接続プロファイルがWWAN(モバイル)接続かどうかを示す値を取得します。これにより、WwanConnectionProfileDetailsがnullかどうかが決まります。
戻り値:接続プロファイルがWWAN(モバイル)接続を表すかどうかを示します。
メーター接続を介してインターネットに到達できるかどうかを確認するには、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
重要なネットワーク可用性の変化を検知するには、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
それが誰かに役立つことを願っています。
NetworkInformation.GetInternetConnectionProfile().IsWlanConnectionProfile
とIsWwanConnectionProfile
を使用します。どちらもtrue
でない場合は、イーサネットなどを使用していることを意味するはずです。
GetInternetConnectionProfile()
はnullを返す可能性があり、接続はアクティブであるがDHCPが失敗した場合に、アクティブなインターネット接続があると誤って返す可能性があることに注意してください。