Rilevare la connettività di rete
I dispositivi mobili usano le tecnologie Wi-Fi e cellulare per la connessione a Internet. Questa dipendenza implica che gli utenti potrebbero perdere la connessione Internet mentre usano l'applicazione. Se non si aggiunge il codice per evitare questa eventualità, l'app potrebbe smettere di rispondere e offrire agli utenti un'esperienza negativa.
In questa unità, si protegge l'applicazione rilevando quando gli utenti perdono la connessione Internet. Queste informazioni diventano importanti quando si iniziano a utilizzare i servizi Web REST.
Perché rilevare la connettività di rete nelle applicazioni per dispositivi mobili?
Rilevare se è disponibile una connessione Internet in un'applicazione per dispositivi mobili è importante perché i dispositivi mobili spesso possono perdere la connessione. Ciò può essere dovuto a una scarsa copertura da parte di un provider di servizi di rete o a un ambiente con ricezione limitata o assente, ad esempio se ci si trova in un tunnel, in una valle profonda o in alta montagna. Ci sono inoltre tipi diversi di connettività di rete. Se ci si trova in un ambiente che fornisce connettività Wi-Fi, in genere è disponibile una larghezza di banda maggiore rispetto a quando si dipende dall'accesso alla rete cellulare. Potresti comunque essere in grado di connetterti a Internet, ma alcune operazioni, ad esempio lo streaming di contenuti video, potrebbero essere più lente (e costose) su un collegamento cellulare rispetto a una connessione Wi-Fi.
Poiché i dispositivi mobili presentano queste problematiche, è necessario scrivere il codice per evitarle. Se non lo si scrive e l'applicazione tenta di eseguire operazioni che usano Internet, l'applicazione potrebbe smettere di rispondere.
Si vuole anche offrire una buona esperienza utente quando l'applicazione non riesce a connettersi a Internet. Se l'applicazione smette di funzionare perché non è disponibile un servizio Internet, gli utenti possono restare confusi. La cosa migliore da fare è fornire informazioni agli utenti. Comunicare che non è disponibile una connessione Internet e che l'applicazione potrebbe non funzionare in modo completo. La figura seguente mostra un esempio:
In questo esempio lo sviluppatore dell'applicazione informa l'utente che non è disponibile una connessione Internet ed è necessario connettersi alla rete Wi-Fi.
Rilevare la connettività di rete
Per controllare la connettività di rete in un'app .NET MAUI, usare la classe Connectivity
. Questa classe espone una proprietà denominata NetworkAccess
e un evento denominato ConnectivityChanged
. È possibile usare questi membri per rilevare i cambiamenti nella rete.
È possibile accedere alla proprietà NetworkAccess
tramite un'altra proprietà denominata Current
. Questo è il meccanismo che Connectivity
accetta per accedere all'implementazione specifica della piattaforma.
La proprietà NetworkAccess
restituisce un valore dall'enumerazione NetworkAccess
. L'enumerazione ha cinque valori: ConstrainedInternet
, Internet
, Local
, None
e Unknown
. Se la proprietà NetworkAccess
restituisce un valore NetworkAccess.None
, significa che non è disponibile una connessione Internet e non è consigliabile eseguire il codice di rete. Questo meccanismo è portabile in più piattaforme. Il codice seguente visualizza un esempio:
if (Connectivity.Current.NetworkAccess == NetworkAccess.None)
{
...
}
L'evento ConnectivityChanged
consente anche di determinare se il dispositivo è connesso a Internet. L'evento ConnectivityChanged
viene attivato automaticamente quando lo stato della rete cambia. Se, ad esempio, si inizia con una connessione di rete attiva che viene poi persa, viene generato l'evento ConnectivityChanged
per informare del cambiamento. Uno dei parametri passati al gestore dell'evento ConnectivityChanged
è un oggetto ConnectivityChangedEventArgs
. Questo oggetto contiene una proprietà denominata IsConnected
. È possibile usare la proprietà IsConnected
per determinare se si è connessi a Internet. Ecco un esempio:
Connectivity.Current.ConnectivityChanged += Connectivity_ConnectivityChanged;
...
void Connectivity_ConnectivityChanged(object sender, ConnectivityChangedEventArgs e)
{
bool stillConnected = e.IsConnected;
}
L'evento ConnectivityChanged
consente di scrivere app in grado di rilevare una modifica dello stato della rete e regolare facilmente le funzionalità disponibili in base ai diversi ambienti.