Detetar conectividade de rede
Os dispositivos móveis usam tecnologias Wi-Fi e celular para se conectar à internet. Essa dependência significa que os usuários podem perder a conexão com a Internet ao usar seu aplicativo. Se você não adicionar código para se proteger contra essa possibilidade, seu aplicativo poderá parar de responder e fornecer aos usuários uma experiência ruim.
Nesta unidade, você protege seu aplicativo detetando quando os usuários perdem a conexão com a Internet. Esta informação torna-se importante quando começamos a consumir serviços Web REST.
Por que detetar conectividade de rede em aplicativos móveis?
Detetar se você tem uma conexão com a Internet em um aplicativo móvel é importante porque os dispositivos móveis podem frequentemente perder sua conexão. Isso pode ser devido à baixa cobertura por um provedor de serviços de rede, ou estar em um ambiente que tem receção limitada ou nenhuma, como um túnel, vale profundo ou alta montanha. Existem também diferentes tipos de conectividade de rede. Se você estiver localizado em um ambiente que fornece conectividade Wi-Fi, normalmente terá uma largura de banda maior do que se depender do acesso celular. Talvez você ainda consiga se conectar à Internet, mas algumas operações, como streaming de conteúdo de vídeo, podem ser mais lentas (e caras) em um link de celular em comparação com uma conexão WiFi.
Como os dispositivos móveis têm esses desafios, você deve escrever código para se proteger contra eles. Se você não fizer isso, e seu aplicativo tentar executar operações que usam a Internet, seu aplicativo pode parar de responder.
Você também deseja fornecer uma boa experiência de usuário quando seu aplicativo não pode se conectar à Internet. Se o seu aplicativo parar de funcionar porque não há serviço de Internet, seus usuários podem ficar confusos. A melhor coisa a fazer é fornecer informações aos seus usuários. Diga-lhes que você não tem uma conexão com a Internet e que seu aplicativo pode não funcionar totalmente sem ela. A imagem a seguir mostra um exemplo:
Neste exemplo, o desenvolvedor do aplicativo informa ao usuário que ele não tem uma conexão com a Internet e que deve tentar se conectar ao Wi-Fi.
Detetar conectividade de rede
Para verificar a conectividade de rede em um aplicativo .NET MAUI, use a Connectivity
classe. Esta classe expõe uma propriedade chamada NetworkAccess
e um evento chamado ConnectivityChanged
. Você pode usar esses membros para detetar alterações na rede.
Você acessa a NetworkAccess
propriedade através de outra propriedade chamada Current
. Este é o mecanismo que Connectivity
leva para acessar a implementação específica da plataforma.
A NetworkAccess
propriedade retorna um valor da NetworkAccess
enumeração. A enumeração tem cinco valores: ConstrainedInternet
, Internet
, Local
, None
, e Unknown
. Se a NetworkAccess
propriedade retornar um valor de , então você sabe que não tem uma conexão com a Internet e não deve executar o código de NetworkAccess.None
rede. Este mecanismo é portátil entre plataformas. O código seguinte mostra um exemplo:
if (Connectivity.Current.NetworkAccess == NetworkAccess.None)
{
...
}
O ConnectivityChanged
evento também permite determinar se o dispositivo está conectado à Internet. O ConnectivityChanged
evento é acionado automaticamente quando o status da rede muda. Por exemplo, se você começar com uma conexão de rede ativa e eventualmente perdê-la, o ConnectivityChanged
evento será gerado para informá-lo sobre a alteração. Um dos parâmetros passados para o ConnectivityChanged
manipulador de eventos é um ConnectivityChangedEventArgs
objeto. Este objeto contém uma propriedade chamada IsConnected
. Você pode usar a IsConnected
propriedade para determinar se está conectado à Internet. Eis um exemplo:
Connectivity.Current.ConnectivityChanged += Connectivity_ConnectivityChanged;
...
void Connectivity_ConnectivityChanged(object sender, ConnectivityChangedEventArgs e)
{
bool stillConnected = e.IsConnected;
}
O ConnectivityChanged
evento permite que você escreva aplicativos que podem detetar uma mudança no status da rede e ajustar perfeitamente a funcionalidade disponível de acordo com os diferentes ambientes.