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.

Connectivity 기능에 액세스하려면 다음과 같은 플랫폼 특정 설정이 필요합니다.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 파일을 열고 매니페스트 노드 내부에 다음을 추가합니다.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 매니페스트 아래에서 필요한 권한: 영역을 찾아 액세스 네트워크 상태 권한을 확인합니다.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.

Connectivity 사용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 – Local and internet access.
  • ConstrainedInternet - 제한된 인터넷 액세스입니다.ConstrainedInternet – Limited internet access. 웹 포털에 대한 로컬 액세스가 제공되지만 인터넷에 액세스하려면 포털을 통해 특정 자격 증명을 제공해야 하는 종속 포털 연결을 나타냅니다.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 network access only.
  • 없음 - 사용 가능한 연결이 없습니다.None – No connectivity is available.
  • 알 수 없음 - 인터넷 연결을 확인할 수 없습니다.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를 보고해도 웹에 대한 모든 권한을 사용할 수 없는 경우도 있습니다.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

Channel 9YouTube에서 더 많은 Xamarin 비디오를 찾습니다.Find more Xamarin videos on Channel 9 and YouTube.