Detekce síťového připojení

Dokončeno

Mobilní zařízení používají k připojení k internetu Wi-Fi a mobilní technologie. Tato závislost znamená, že uživatelé mohou při používání aplikace přijít o připojení k internetu. Pokud nepřidáte kód pro ochranu před touto možností, může vaše aplikace přestat reagovat a poskytovat uživatelům špatné prostředí.

V této lekci chráníte aplikaci tím, že zjistíte, kdy uživatelé ztratí připojení k internetu. Tyto informace jsou důležité, když začneme využívat webové služby REST.

Proč zjišťovat síťové připojení v mobilních aplikacích?

Zjištění, jestli máte připojení k internetu v mobilní aplikaci, je důležité, protože mobilní zařízení můžou často ztratit připojení. Příčinou může být špatné pokrytí poskytovatelem síťových služeb nebo prostředí, které má omezenou nebo žádnou recepci, jako je tunel, hluboké údolí nebo vysoká hora. Existují také různé typy připojení k síti. Pokud se nacházíte v prostředí, které poskytuje připojení Wi-Fi, obvykle máte větší šířku pásma, než když jste závislí na mobilním přístupu. Možná se stále můžete připojit k internetu, ale některé operace, jako je streamování obsahu videa, můžou být pomalejší (a drahé) přes mobilní odkaz v porovnání s připojením Wi-Fi.

Vzhledem k tomu, že mobilní zařízení mají tyto výzvy, musíte napsat kód, který je chrání před nimi. Pokud ne a vaše aplikace se pokusí provést operace, které používají internet, může aplikace přestat reagovat.

Chcete také poskytnout dobré uživatelské prostředí, když se vaše aplikace nemůže připojit k internetu. Pokud vaše aplikace přestane fungovat, protože neexistuje žádná internetová služba, můžou být vaši uživatelé zmatení. Nejlepší věcí, kterou je potřeba udělat, je poskytnout uživatelům informace. Řekněte jim, že nemáte připojení k internetu a že vaše aplikace nemusí fungovat úplně bez ní. Následující obrázek ukazuje příklad:

Screenshot of an app showing a warning about limited network connectivity.

V tomto příkladu vývojář aplikace informuje uživatele, že nemá připojení k internetu a měl by se pokusit připojit k Wi-Fi.

Detekce síťového připojení

Pokud chcete zkontrolovat síťové připojení v aplikaci .NET MAUI, použijte Connectivity třídu. Tato třída zveřejňuje vlastnost volanou NetworkAccess a událost s názvem ConnectivityChanged. Tyto členy můžete použít k detekci změn v síti.

K vlastnosti přistupujete NetworkAccess prostřednictvím jiné vlastnosti s názvem Current. Jedná se o mechanismus, který Connectivity přijímá přístup k implementaci specifické pro platformu.

Vlastnost NetworkAccess vrátí hodnotu z výčtu NetworkAccess . Výčet má pět hodnot: ConstrainedInternet, Internet, Local, Nonea Unknown. NetworkAccess Pokud tato vlastnost vrátí hodnotu NetworkAccess.None, víte, že nemáte připojení k internetu a neměli byste spouštět síťový kód. Tento mechanismus je přenosný na různých platformách. Podívejte se na ukázku kódu:

if (Connectivity.Current.NetworkAccess == NetworkAccess.None)
{
    ...
}

Událost ConnectivityChanged také umožňuje určit, jestli je zařízení připojené k internetu. Událost ConnectivityChanged se aktivuje automaticky, když se změní stav sítě. Pokud například začnete s aktivním síťovým připojením a nakonec ho ztratíte, vyvolá se událost, ConnectivityChanged která vás informuje o změně. Jedním z parametrů předaných obslužné rutině ConnectivityChangedConnectivityChangedEventArgs události je objekt. Tento objekt obsahuje vlastnost s názvem IsConnected. Vlastnost můžete použít IsConnected k určení, jestli jste připojení k internetu. Tady je příklad:

Connectivity.Current.ConnectivityChanged += Connectivity_ConnectivityChanged;
...
void Connectivity_ConnectivityChanged(object sender, ConnectivityChangedEventArgs  e)
{
    bool stillConnected = e.IsConnected;
}

Tato ConnectivityChanged událost umožňuje psát aplikace, které můžou detekovat změnu stavu sítě a bezproblémově upravovat funkce dostupné v různých prostředích.

Prověrka znalostí

1.

Který z následujících důvodů je nejlepším důvodem, proč před spuštěním síťového kódu zkontrolovat, jestli jste připojení k internetu?

2.

Předpokládejme, že píšete aplikaci, kterou může uživatel spustit při cestování ve vozidle. Pokud vozidlo přejde do tunelu, zařízení může ztratit připojení k internetu. Který člen Connectivity třídy byste měli použít ke zjištění změny připojení k síti?"