Xamarin.Essentials:Łączność
Klasa Connectivity umożliwia monitorowanie zmian w warunkach sieciowych urządzenia, sprawdzanie bieżącego dostępu do sieci i sposób, w jaki jest on obecnie połączony.
Aby rozpocząć korzystanie z tego interfejsu API, przeczytaj przewodnik wprowadzający , Xamarin.Essentials aby upewnić się, że biblioteka jest prawidłowo zainstalowana i skonfigurowana w projektach.
Aby uzyskać dostęp do funkcji łączności , wymagana jest następująca konfiguracja specyficzna dla platformy.
Uprawnienie AccessNetworkState
jest wymagane i musi być skonfigurowane w projekcie systemu Android. Można to dodać w następujący sposób:
Otwórz plik AssemblyInfo.cs w folderze Właściwości i dodaj:
[assembly: UsesPermission(Android.Manifest.Permission.AccessNetworkState)]
LUB Zaktualizuj manifest systemu Android:
Otwórz plik AndroidManifest.xml w folderze Właściwości i dodaj następujący element w węźle manifestu.
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
Możesz też kliknąć prawym przyciskiem myszy projekt systemu Android i otworzyć właściwości projektu. W obszarze Manifest systemu Android znajdź obszar Wymagane uprawnienia: i sprawdź uprawnienie Stan sieci dostępu. Spowoduje to automatyczne zaktualizowanie pliku AndroidManifest.xml .
Dodaj odwołanie do Xamarin.Essentials klasy:
using Xamarin.Essentials;
Sprawdź bieżący dostęp do sieci:
var current = Connectivity.NetworkAccess;
if (current == NetworkAccess.Internet)
{
// Connection to internet is available
}
Dostęp sieciowy należy do następujących kategorii:
- Internet — dostęp lokalny i internetowy.
- ConstrainedInternet — ograniczony dostęp do Internetu. Wskazuje łączność portalu z niewoli, w którym jest udostępniany dostęp lokalny do portalu internetowego, ale dostęp do Internetu wymaga podania określonych poświadczeń za pośrednictwem portalu.
- Lokalny — tylko dostęp do sieci lokalnej.
- Brak — łączność nie jest dostępna.
- Nieznany — nie można określić łączności z Internetem.
Możesz sprawdzić, jakiego typu profil połączenia urządzenie aktywnie używa:
var profiles = Connectivity.ConnectionProfiles;
if (profiles.Contains(ConnectionProfile.WiFi))
{
// Active Wi-Fi connection.
}
Za każdym razem, gdy profil połączenia lub zmiany dostępu do sieci można odebrać zdarzenie po wyzwoleniu:
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;
}
}
Należy pamiętać, że istnieje możliwość zgłoszenia przez NetworkAccess
usługę , Internet
ale pełny dostęp do sieci Web jest niedostępny. Ze względu na sposób działania łączności na każdej platformie może zagwarantować, że połączenie jest dostępne. Na przykład urządzenie może być połączone z siecią Wi-Fi, ale router jest odłączony od Internetu. W tym przypadku internet może być zgłaszany, ale aktywne połączenie nie jest dostępne.
Więcej filmów na platformie Xamarin można znaleźć w witrynach Channel 9 i YouTube.