Obecnie tworzone aplikacje mobilne praktycznie nie potrafią działać bez połączenia z Internetem. Przykładów wykorzystania transmisji danych w aplikacjach można wymieniać nieskończoną ilość. Ogranicza nas jedynie nasza wyobraźnia.

Implementując tego rodzaju rozwiązania w aplikacjach bardzo często zapomina się o drobnej rzeczy, którą można zrobić przez wykonaniem zapytania sieciowego. Tą drobną rzeczą jest sprawdzenie, czy telefon posiada dostęp do sieci. Sam dostęp do sieci nie gwarantuje nam, że uzyskamy połączenie z Internetem. Informacja ta może jednak zostać wykorzystana poprawnej obsługi braku sieci.

Bardzo często, jeśli nie jest sprawdzana dostępność sieci, obsługa tej sytuacji robiona jest przez wyjątek. Nie jest to do końca poprawne, zważywszy na niewielki koszt dodania sprawdzenia istnienia sieci. Aby to zrobić wystarczy wywołać jedną metodę:

using System.Net.NetworkInformation;

bool isAvailable = NetworkInterface.GetIsNetworkAvailable();

MessageBox.Show(isAvailable.ToString());

Statyczna metoda NetworkInterface.GetIsNetworkAvailable() pozwala na uzyskanie informacji, czy nasz telefon ma dostęp do jakiejkolwiek sieci. Wykorzystując tą metodę należy pamiętać o jednym drobiazgu, zresztą podobnie jak również w sytuacji wykorzystywania połączenia sieciowego – telefon potrzebuje trochę czasu, aby zalogować się do sieci. Informacja ta ma szczególne znaczenie, jeśli dysponujemy tylko połączeniem WiFi. W sytuacji, gdy uruchomimy aplikację zaraz po wyjściu telefonu z trybu uśpienia, otrzymamy komunikat, że nie ma dostępnej sieci. Co może okazać się nieprawdą ponieważ telefonowi nie udało się jeszcze zalogować do dostępnych sieci WiFi.

Oprócz informacji o tym, czy sieć jest dostępna mamy również dostęp do typu sieci z jaką połączony jest nasz telefon. Informacja ta może być bardzo pomocna, jeśli chcemy zbudować bardzo responsywny interfejs użytkownika w aplikacjach wykorzystujących intensywnie połączenie z siecią. W przypadku wykrycia połączenia z wolniejszym typem sieci można wyłączyć niektóre funkcje programu – przykładowo odtwarzać wideo w niskiej rozdzielczości w przypadku wolnego połączenia, a w przypadku szybkiego – w wysokiej rozdzielczości.

W celu sprawdzenie z jakim połączeniem mamy do czynienia wystarczy skorzystać z własności:

Microsoft.Phone.Net.NetworkInformation.NetworkInterface.NetworkInterfaceType

Własność ta zwraca następujące wartości:

  • Wireless80211 – połączenie przez WiFi,
  • Ethernet – połączenie przez kabel USB podłączony do komputera,
  • MobileBroadbandGSM,
  • MobileBroadbandCDMA,
  • None – brak sieci.