Detectar conectividade de rede

Concluído

Os dispositivos móveis usam Wi-Fi e tecnologias celulares para se conectarem à Internet. Essa dependência significa que os usuários podem perder a conexão com a Internet enquanto usam o aplicativo. Se você não adicionar o código para se proteger contra essa possibilidade, seu aplicativo poderá parar de responder e proporcionar aos usuários uma experiência ruim.

Nesta unidade, você protegerá o aplicativo ao detectar quando os usuários perdem a conexão com a Internet. Essas informações tornam-se importantes quando começamos a consumir serviços Web REST.

Por que detectar a conectividade de rede em aplicativos móveis?

Detectar se você tem uma conexão com a Internet em um aplicativo móvel é importante porque dispositivos móveis podem perder a conexão com frequência. Isso pode ocorrer devido a uma cobertura ruim de um provedor de serviços de rede ou por estar em um ambiente que recepção limitada ou nenhuma recepção, como um túnel, um vale profundo ou uma montanha alta. Também há diferentes tipos de conectividade de rede. Se estiver em um ambiente que oferece conectividade Wi-Fi, normalmente você terá largura de banda maior do que se depender do acesso por celular. Você ainda pode se conectar à Internet, mas algumas operações, como streaming de conteúdo de vídeo, podem ser mais lentas (e caras) por meio de um link de celular em comparação com uma conexão WiFi.

Como os dispositivos móveis têm esses desafios, é preciso escrever código para protegê-los contra eles. Se você não fizer isso e o aplicativo tentar executar operações que usam a Internet, o aplicativo poderá parar de responder.

Também é necessário oferecer uma boa experiência do usuário quando o aplicativo não pode se conectar à Internet. Se o aplicativo parar de funcionar porque não há serviço de Internet, os usuários poderão ficar confusos. O melhor a fazer é fornecer informações aos seus usuários. Informe que eles não têm conexão com a Internet e que o 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 de aplicativos informa o usuário de que não há uma conexão com a Internet e é necessário tentar se conectar a uma rede Wi-Fi.

Detectar conectividade de rede

Para verificar a conectividade de rede em um aplicativo .NET MAUI, use a classe Connectivity. Essa classe expõe uma propriedade chamada NetworkAccess um evento chamado ConnectivityChanged. Você pode usar esses membros para detectar alterações na rede.

Você acessa a propriedade NetworkAccess por meio de outra propriedade chamada Current. Esse é o mecanismo usado por Connectivity para acessar a implementação específica da plataforma.

A propriedade NetworkAccess retorna um valor da enumeração NetworkAccess. A enumeração tem cinco valores: ConstrainedInternet, Internet, Local, None e Unknown. Se a propriedade NetworkAccess retornar um valor de NetworkAccess.None, você saberá que não há uma conexão com a Internet e não deverá executar o código de rede. Esse mecanismo é portátil entre plataformas. O código a seguir mostra um exemplo:

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

O evento ConnectivityChanged também permite determinar se o dispositivo está conectado à Internet. O evento ConnectivityChanged é disparado automaticamente quando o status da rede é alterado. Por exemplo, se você começar com uma conexão de rede ativa e eventualmente perdê-la, o evento ConnectivityChanged será gerado para informar você sobre a alteração. Um dos parâmetros passados para o manipulador de eventos ConnectivityChanged é um objeto ConnectivityChangedEventArgs. Esse objeto contém uma propriedade chamada IsConnected. É possível usar a propriedade IsConnected para determinar se você está conectado à Internet. Veja um exemplo:

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

O evento ConnectivityChanged permite que você escreva aplicativos que podem detectar uma alteração no status da rede e ajustar perfeitamente a funcionalidade disponível de acordo com os diferentes ambientes.

Verificação de conhecimentos

1.

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

2.

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