Identifiera nätverksanslutning

Slutförd

Mobila enheter använder Wi-Fi- och mobilteknik för att ansluta till Internet. Det här beroendet innebär att användarna kan förlora sin Internetanslutning när de använder ditt program. Om du inte lägger till kod för att skydda mot den här möjligheten kan din app sluta svara och ge användarna en dålig upplevelse.

I den här lektionen skyddar du ditt program genom att identifiera när användarna förlorar sin Internetanslutning. Den här informationen blir viktig när vi börjar använda REST-webbtjänster.

Varför identifiera nätverksanslutningar i mobila program?

Det är viktigt att identifiera om du har en Internetanslutning i ett mobilprogram eftersom mobila enheter ofta kan förlora sin anslutning. Detta kan bero på dålig täckning av en nätverkstjänstleverantör, eller att vara i en miljö som har begränsad eller ingen mottagning, till exempel en tunnel, djup dal eller högt berg. Det finns också olika typer av nätverksanslutningar. Om du befinner dig i en miljö som tillhandahåller WiFi-anslutning har du vanligtvis högre bandbredd än om du är beroende av mobilåtkomst. Du kanske fortfarande kan ansluta till Internet, men vissa åtgärder, till exempel strömmande videoinnehåll, kan vara långsammare (och dyra) via en mobillänk jämfört med en WiFi-anslutning.

Eftersom mobila enheter har dessa utmaningar måste du skriva kod för att skydda mot dem. Om du inte gör det och programmet försöker utföra åtgärder som använder Internet kan programmet sluta svara.

Du vill också ge en bra användarupplevelse när programmet inte kan ansluta till Internet. Om programmet slutar fungera eftersom det inte finns någon Internettjänst kan användarna bli förvirrade. Det bästa du kan göra är att ge information till dina användare. Berätta för dem att du inte har någon Internetanslutning och att programmet kanske inte fungerar helt utan den. Följande bild visar ett exempel:

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

I det här exemplet informerar programutvecklaren användaren om att de inte har någon internetanslutning och att de bör försöka ansluta till Wi-Fi.

Identifiera nätverksanslutning

Om du vill söka efter nätverksanslutningar i en .NET MAUI-app använder du Connectivity klassen . Den här klassen exponerar en egenskap som heter NetworkAccess och en händelse med namnet ConnectivityChanged. Du kan använda dessa medlemmar för att identifiera ändringar i nätverket.

Du kommer åt egenskapen NetworkAccess via en annan egenskap med namnet Current. Det här är den mekanism som Connectivity krävs för att få åtkomst till den plattformsspecifika implementeringen.

Egenskapen NetworkAccess returnerar ett värde från NetworkAccess uppräkningen. Uppräkningen har fem värden: ConstrainedInternet, Internet, Local, Noneoch Unknown. Om egenskapen NetworkAccess returnerar värdet NetworkAccess.None, vet du att du inte har någon anslutning till Internet och att du inte bör köra nätverkskod. Den här mekanismen är portabel mellan plattformar. Följande kod visar ett exempel:

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

Med ConnectivityChanged händelsen kan du också avgöra om enheten är ansluten till Internet. Händelsen ConnectivityChanged utlöses automatiskt när nätverksstatusen ändras. Om du till exempel börjar med en aktiv nätverksanslutning och slutligen förlorar den ConnectivityChanged , genereras händelsen för att informera dig om ändringen. En av parametrarna som skickas ConnectivityChanged till händelsehanteraren är ett ConnectivityChangedEventArgs objekt. Det här objektet innehåller en egenskap som heter IsConnected. Du kan använda egenskapen IsConnected för att avgöra om du är ansluten till Internet. Här är ett exempel:

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

Med ConnectivityChanged händelsen kan du skriva appar som kan identifiera en ändring i nätverksstatus och smidigt justera de funktioner som är tillgängliga enligt de olika miljöerna.

Kunskapstest

1.

Vilket av följande är den bästa anledningen till att kontrollera om du är ansluten till Internet innan du kör nätverkskod?

2.

Anta att du skriver program som en användare kan köra när de reser i ett fordon. Om fordonet går in i en tunnel kan enheten förlora Internetanslutningen. Vilken medlem i Connectivity klassen ska du använda för att identifiera ändringen i nätverksanslutningen?"