Xamarin.Essentials:接続Xamarin.Essentials: Connectivity

Connectivity クラスを使用すると、デバイスのネットワーク状態の変更を監視したり、現在のネットワーク アクセスとその現在の接続方法を確認したりできます。The Connectivity class lets you monitor for changes in the device's network conditions, check the current network access, and how it is currently connected.

作業開始Get started

この API の使用を始めるには、Xamarin.Essentials の概要ガイドを読み、ライブラリが正しくインストールされてプロジェクトに設定されていることを確認してください。To start using this API, read the getting started guide for Xamarin.Essentials to ensure the library is properly installed and set up in your projects.

接続の機能にアクセスするには、次のプラットフォーム固有の設定が必要です。To access the Connectivity functionality the following platform specific setup is required.

AccessNetworkState アクセス許可が必要です。Android プロジェクト内で構成する必要があります。The AccessNetworkState permission is required and must be configured in the Android project. これは次の方法で追加できます。This can be added in the following ways:

[プロパティ] フォルダーにある AssemblyInfo.cs ファイルを開き、以下を追加します。Open the AssemblyInfo.cs file under the Properties folder and add:

[assembly: UsesPermission(Android.Manifest.Permission.AccessNetworkState)]

または、Android マニフェストを追加します。OR Update Android Manifest:

[プロパティ] フォルダーにある AndroidManifest.xml ファイルを開き、manifest ノードの内部に以下を追加します。Open the AndroidManifest.xml file under the Properties folder and add the following inside of the manifest node.

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

または、Android プロジェクトを右クリックし、プロジェクトのプロパティを開きます。Or right click on the Android project and open the project's properties. [Android マニフェスト] の下で [必要なアクセス許可:] 領域を探し、[Access Network State](ネットワーク アクセスの状態) アクセス許可を確認します。Under Android Manifest find the Required permissions: area and check the Access Network State permission. これにより、AndroidManifest.xml ファイルが自動的に更新されます。This will automatically update the AndroidManifest.xml file.

接続の使用Using Connectivity

自分のクラスの Xamarin.Essentials に参照を追加します。Add a reference to Xamarin.Essentials in your class:

using Xamarin.Essentials;

現在のネットワーク アクセスを確認します。Check current network access:

var current = Connectivity.NetworkAccess;

if (current == NetworkAccess.Internet)
{
    // Connection to internet is available
}

ネットワーク アクセスは次のカテゴリに分けられます。Network access falls into the following categories:

  • Internet – ローカルとインターネットのアクセス。Internet – Local and internet access.
  • ConstrainedInternet – 制限付きインターネット アクセスです。ConstrainedInternet – Limited internet access. Web ポータルへのローカル接続が提供されている、キャプティブ ポータルの接続を示しています。ただし、インターネットにアクセスするにはポータル経由で特定の資格情報を提供する必要があります。Indicates captive portal connectivity, where local access to a web portal is provided, but access to the Internet requires that specific credentials are provided via a portal.
  • local – ローカル ネットワークのみにアクセスします。Local – Local network access only.
  • None – 使用できる接続がありません。None – No connectivity is available.
  • Unknown – インターネット接続を確認できません。Unknown – Unable to determine internet connectivity.

デバイスが実際に使用している接続プロファイルの種類を確認できます。You can check what type of connection profile the device is actively using:

var profiles = Connectivity.ConnectionProfiles;
if (profiles.Contains(ConnectionProfile.WiFi))
{
    // Active Wi-Fi connection.
}

接続プロファイルまたはネットワーク アクセスが変更されるたびに、トリガーされたイベントを受信できます。Whenever the connection profile or network access changes you can receive an event when triggered:

public class ConnectivityTest
{
    public ConnectivityTest()
    {
        // Register for connectivity changes, be sure to unsubscribe when finished
        Connectivity.ConnectivityChanged += Connectivity_ConnectivityChanged;
    }

    void Connectivity_ConnectivityChanged(object sender, ConnectivityChangedEventArgs  e)
    {
        var access = e.NetworkAccess;
        var profiles = e.ConnectionProfiles;
    }
}

制限事項Limitations

NetworkAccess によって Internet が報告されるが、Web へのフル アクセスは利用できないという場合があることに注意する必要があります。It is important to note that it is possible that Internet is reported by NetworkAccess but full access to the web is not available. 各プラットフォーム上での接続の動作方法によってのみ、接続が使用可能であることを保証できます。Due to how connectivity works on each platform it can only guarantee that a connection is available. たとえば、デバイスは Wi-Fi ネットワークに接続されているが、ルーターがインターネットから切断されている可能性があります。For instance the device may be connected to a Wi-Fi network, but the router is disconnected from the internet. この例ではインターネットが報告される場合がありますが、実際には接続を使用できません。In this instance Internet may be reported, but an active connection is not available.

APIAPI

他の Xamarin ビデオは、Channel 9 および YouTube でご覧いただけます。Find more Xamarin videos on Channel 9 and YouTube.