Xamarin.Essentials: Konnektivität

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

Erste Schritte

Lesen Sie zum Einstieg in die Verwendung dieser API den Leitfaden mit ersten Schritte für Xamarin.Essentials, um sicherzustellen, dass die Bibliothek ordnungsgemäß installiert und in Ihren Projekten eingerichtet ist.

Der Zugriff auf die Connectivity-Funktionalität erfordert das folgende plattformspezifische Setup.

Die Berechtigung AccessNetworkState ist obligatorisch und muss im Android-Projekt konfiguriert werden. Das Hinzufügen erfolgt folgendermaßen:

Öffnen Sie die Datei AssemblyInfo.cs im Ordner Eigenschaften und fügen Sie Folgendes hinzu:

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

Alternativ können Sie das Android-Manifest aktualisieren:

Öffnen Sie die Datei AndroidManifest.xml im Ordner Eigenschaften, und fügen Sie Folgendes im Knoten Manifest hinzu.

<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. Überprüfen Sie unter Android-Manifest im Bereich Erforderliche Berechtigungen: die Berechtigung Zugriff auf Netzwerkstatus. Dadurch wird die Datei AndroidManifest.xml automatisch aktualisiert.

Verwenden der Konnektivität

Fügen Sie in Ihrer Klasse einen Verweis auf Xamarin.Essentials hinzu:

using Xamarin.Essentials;

Überprüfen Sie den aktuellen Netzwerkzugriff:

var current = Connectivity.NetworkAccess;

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

Netzwerkzugriff lässt sich in die folgenden Kategorien unterteilen:

  • Internet: Lokaler und Internetzugriff.
  • ConstrainedInternet: Eingeschränkter Internetzugriff. 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.
  • Lokal: Nur lokaler Netzwerkzugriff.
  • Kein:Keine Verbindung verfügbar.
  • Unbekannt: Internetkonnektivität kann nicht bestimmt werden.

Sie können überprüfen, welche Art von Verbindungsprofil das Gerät aktiv verwendet:

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:

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änkungen

Beachten Sie, dass möglicherweise Internet von NetworkAccess gemeldet wird, jedoch kein Vollzugriff auf das Web zur Verfügung steht. Aufgrund der unterschiedlichen Funktionsweise von Konnektivität auf den Plattformen kann sie nur garantieren, dass eine Verbindung verfügbar ist. So kann das Gerät beispielsweise mit WLAN verbunden sein, doch der Router ist vom Internet getrennt. In diesem Fall wird ggf. Internet gemeldet, obwohl keine aktive Verbindung verfügbar ist.

API

Auf Channel 9 und auf YouTube finden Sie weitere Videos zu Xamarin.