Xamarin.Essentials: KonnektivitätXamarin.Essentials: Connectivity

Mit der Connectivity-Klasse können Sie Änderungen der Netzwerkbedingungen des Geräts überwachen, den aktuellen Netzwerkzugriff überprüfen und die aktuelle Verbindung bestimmen.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.

Erste SchritteGet started

Lesen Sie zum Einstieg in diese API das Handbuch Erste Schritte mit Xamarin.Essentials, um sicherzustellen, dass die Bibliothek ordnungsgemäß installiert und in Ihren Projekten eingerichtet ist.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.

Der Zugriff auf die Connectivity-Funktionalität erfordert das folgende plattformspezifische Setup.To access the Connectivity functionality the following platform specific setup is required.

Die Berechtigung AccessNetworkState ist obligatorisch und muss im Android-Projekt konfiguriert werden.The AccessNetworkState permission is required and must be configured in the Android project. Das Hinzufügen erfolgt folgendermaßen:This can be added in the following ways:

Öffnen Sie die Datei AssemblyInfo.cs im Ordner Eigenschaften und fügen Sie Folgendes hinzu:Open the AssemblyInfo.cs file under the Properties folder and add:

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

Alternativ können Sie das Android-Manifest aktualisieren:OR Update Android Manifest:

Öffnen Sie die Datei AndroidManifest.xml im Ordner Eigenschaften, und fügen Sie Folgendes im Knoten Manifest hinzu.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" />

Alternativ können Sie mit der rechten Maustaste auf das Android-Projekt klicken und die Eigenschaften des Projekts öffnen.Or right click on the Android project and open the project's properties. Überprüfen Sie unter Android-Manifest im Bereich Erforderliche Berechtigungen: die Berechtigung Zugriff auf Netzwerkstatus.Under Android Manifest find the Required permissions: area and check the Access Network State permission. Dadurch wird die Datei AndroidManifest.xml automatisch aktualisiert.This will automatically update the AndroidManifest.xml file.

Verwenden der KonnektivitätUsing Connectivity

Fügen Sie Ihrer Klasse einen Verweis auf Xamarin.Essentials hinzu:Add a reference to Xamarin.Essentials in your class:

using Xamarin.Essentials;

Überprüfen Sie den aktuellen Netzwerkzugriff:Check current network access:

var current = Connectivity.NetworkAccess;

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

Netzwerkzugriff lässt sich in die folgenden Kategorien unterteilen:Network access falls into the following categories:

  • Internet: Lokaler und Internetzugriff.Internet – Local and internet access.
  • ConstrainedInternet: Eingeschränkter Internetzugriff.ConstrainedInternet – Limited internet access. Beschreibt die Konnektivität über ein Erfassungsportal: Es wird lokaler Zugriff auf ein Webportal bereitgestellt, doch der Zugriff auf das Internet erfordert, dass bestimmte Anmeldeinformationen über ein Portal angegeben werden.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.
  • Lokal: Nur lokaler Netzwerkzugriff.Local – Local network access only.
  • Kein:Keine Verbindung verfügbar.None – No connectivity is available.
  • Unbekannt: Internetkonnektivität kann nicht bestimmt werden.Unknown – Unable to determine internet connectivity.

Sie können überprüfen, welche Art von Verbindungsprofil das Gerät aktiv verwendet: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.
}

Wenn sich das Verbindungsprofil oder der Netzwerkzugriff ändern, wird ein Ereignis ausgelöst, das Sie empfangen können: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;
    }
}

EinschränkungenLimitations

Beachten Sie, dass möglicherweise Internet von NetworkAccess gemeldet wird, jedoch kein Vollzugriff auf das Web zur Verfügung steht.It is important to note that it is possible that Internet is reported by NetworkAccess but full access to the web is not available. Aufgrund der unterschiedlichen Funktionsweise von Konnektivität auf den Plattformen kann sie nur garantieren, dass eine Verbindung verfügbar ist.Due to how connectivity works on each platform it can only guarantee that a connection is available. So kann das Gerät beispielsweise mit WLAN verbunden sein, doch der Router ist vom Internet getrennt.For instance the device may be connected to a Wi-Fi network, but the router is disconnected from the internet. In diesem Fall wird ggf. Internet gemeldet, obwohl keine aktive Verbindung verfügbar ist.In this instance Internet may be reported, but an active connection is not available.

APIAPI

Auf Channel 9 und auf YouTube finden Sie weitere Videos zu Xamarin.Find more Xamarin videos on Channel 9 and YouTube.