Detetar conectividade de rede

Concluído

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:

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

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, , , , NoneInternetLocale .Unknown Se a propriedade retornar um valor de , então você sabe que não tem uma conexão com a NetworkAccess Internet e não deve executar o código de NetworkAccess.Nonerede. 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.

Verificação de conhecimento

1.

Qual das seguintes opções é a melhor razão para verificar se você está conectado à Internet antes de executar o código de rede?

2.

Suponha que você está escrevendo um aplicativo que um usuário pode executar enquanto viaja em um veículo. Se o veículo entrar num túnel, o dispositivo poderá perder a ligação à Internet. Qual membro da Connectivity classe você deve usar para detetar a mudança na conectividade de rede?"