Netwerkconnectiviteit detecteren

Voltooid

Mobiele apparaten gebruiken Wi-Fi- en mobiele technologieën om verbinding te maken met internet. Deze afhankelijkheid betekent dat uw gebruikers hun internetverbinding kunnen verliezen tijdens het gebruik van uw toepassing. Als u geen code toevoegt om u te beschermen tegen deze mogelijkheid, kan uw app niet meer reageren en uw gebruikers een slechte ervaring bieden.

In deze les beveiligt u uw toepassing door te detecteren wanneer uw gebruikers hun internetverbinding verliezen. Deze informatie wordt belangrijk wanneer we REST-webservices gaan gebruiken.

Waarom netwerkconnectiviteit detecteren in mobiele toepassingen?

Detecteren of u een internetverbinding hebt in een mobiele toepassing is belangrijk omdat mobiele apparaten vaak hun verbinding kunnen verliezen. Dit kan het gevolg zijn van slechte dekking door een netwerkserviceprovider of omdat deze zich in een omgeving bevindt die beperkt of geen ontvangst heeft, zoals een tunnel, diepe vallei of hoge berg. Er zijn ook verschillende typen netwerkconnectiviteit. Als u zich in een omgeving bevindt die wi-fi-connectiviteit biedt, hebt u doorgaans een hogere bandbreedte dan als u afhankelijk bent van mobiele toegang. Mogelijk kunt u nog steeds verbinding maken met internet, maar sommige bewerkingen, zoals het streamen van video-inhoud, kunnen langzamer (en duur) zijn via een mobiele verbinding in vergelijking met een Wi-Fi-verbinding.

Omdat mobiele apparaten deze uitdagingen hebben, moet u code schrijven om ze te beschermen. Als u dat niet doet en uw toepassing bewerkingen probeert uit te voeren die gebruikmaken van internet, reageert uw toepassing mogelijk niet meer.

U wilt ook een goede gebruikerservaring bieden wanneer uw toepassing geen verbinding kan maken met internet. Als uw toepassing niet meer werkt omdat er geen internetservice is, zijn uw gebruikers mogelijk niet meer in de war. Het beste om te doen is om uw gebruikers informatie te verstrekken. Vertel hen dat u geen internetverbinding hebt en dat uw toepassing mogelijk niet volledig zonder de toepassing wordt uitgevoerd. In de volgende afbeelding ziet u een voorbeeld:

Schermopname van een app met een waarschuwing over beperkte netwerkconnectiviteit.

In dit voorbeeld informeert de ontwikkelaar van de toepassing de gebruiker dat deze geen internetverbinding heeft en moet proberen verbinding te maken met Wi-Fi.

Netwerkconnectiviteit detecteren

Gebruik de Connectivity klasse om te controleren op netwerkconnectiviteit in een .NET MAUI-app. Deze klasse toont een aangeroepen NetworkAccess eigenschap en een gebeurtenis met de naam ConnectivityChanged. U kunt deze leden gebruiken om wijzigingen in het netwerk te detecteren.

U opent de eigenschap via een andere eigenschap met de NetworkAccess naam Current. Dit is het mechanisme dat Connectivity nodig is voor toegang tot de platformspecifieke implementatie.

De NetworkAccess eigenschap retourneert een waarde uit de NetworkAccess opsomming. De opsomming heeft vijf waarden: , , , en UnknownNone. LocalInternetConstrainedInternet Als de NetworkAccess eigenschap een waarde retourneert, NetworkAccess.Noneweet u dat u geen verbinding hebt met internet en moet u geen netwerkcode uitvoeren. Dit mechanisme is overdraagbaar op verschillende platforms. In de volgende code ziet u een voorbeeld:

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

ConnectivityChanged Met de gebeurtenis kunt u ook bepalen of het apparaat is verbonden met internet. De ConnectivityChanged gebeurtenis wordt automatisch geactiveerd wanneer de netwerkstatus wordt gewijzigd. Als u bijvoorbeeld begint met een actieve netwerkverbinding en deze uiteindelijk kwijtraakt, wordt de ConnectivityChanged gebeurtenis gegenereerd om u te informeren over de wijziging. Een van de parameters die worden doorgegeven aan de ConnectivityChanged gebeurtenis-handler is een ConnectivityChangedEventArgs object. Dit object bevat een eigenschap met de naam IsConnected. U kunt de IsConnected eigenschap gebruiken om te bepalen of u verbinding hebt met internet. Hier volgt een voorbeeld:

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

Met ConnectivityChanged deze gebeurtenis kunt u apps schrijven die een wijziging in de netwerkstatus kunnen detecteren en de beschikbare functionaliteit naadloos kunnen aanpassen aan de verschillende omgevingen.

Kenniscontrole

1.

Welke van de volgende is de beste reden om te controleren of u verbinding hebt met internet voordat u netwerkcode uitvoert?

2.

Stel dat u een toepassing schrijft die een gebruiker kan uitvoeren tijdens het reizen in een voertuig. Als het voertuig een tunnel binnenkomt, kan de internetverbinding van het apparaat verloren gaan. Welk lid van de Connectivity klasse moet u gebruiken om de wijziging in de netwerkverbinding te detecteren?"