C# Maui la gestione delle connessioni in .Net 7

Articolo che fornisce le basi per gestire le connessioni del dispositivo mobile e Desktop.

il
Sviluppatore Microsoft .Net, Collaboratore di IProgrammatori

In questo articolo vedremo come gestire in un progetto di multipiattaforma, tramite il Framework MAUI, la gestione delle connessioni del dispositivo.
In particolare, tramite il linguaggio di programmazione C# e MAUI con versione di .Net 7 se il dispositivo è collegato al WiFi o altri dispositivi, e rilevare il cambiamento di connessione.
L’ambiente di sviluppo che utilizzeremo è Visual Studio 2022 community, e l’ultima versione del Framework, che è al momento la 7.

L’applicazione riporterà in un controllo di tipo label, il testo relativo al cambiamento o altre informazioni tramite un pulsante, il tutto come mostrato in figura 1. 

Figura 1 – La form con i vari controlli

Figura 1 – La form con i vari controlli

Creazione del progetto


Si crea un nuovo progetto di tipo MAUI, selezionando come tipologia di progetto quello relativo “App Net MAUI”, dopo aver assegnato un nome e passando alla pagina successiva, selezionare la versione 7 del Framework.
A questo punto verrà creato la form con i pulsanti standard.
La form dei controlli aggiunti automaticamente, dovrà contenere due di tipo label ed uno di tipo button. In una label, sarà riportata la dicitura “Esempio di connettività” che è il titolo, mentre sotto, avrà impostato la proprietà “Name” con il valore “LblTesto” e la proprietà “Text” a vuoto, in modo che sarà visualizzato di volta in volta il testo.
Il controllo di tipo Button, avrà la proprietà “Name” impostata su “BtnVerifica” e la proprietà “Text” con il valore “Verifica” mentre per la proprietà di gestione evento “Clicked” sarà impostato “BtnVerifica_Clicked”.
Di seguito si riporta il frammento di codice delle suddette operazioni per la parte XAML.

XAML
<ScrollView>
       <VerticalStackLayout
           Spacing="25"
           Padding="30,0"
           VerticalOptions="Center">
           <Label
               Text="Esempio connettività"
               SemanticProperties.HeadingLevel="Level1"
               FontSize="32"
               HorizontalOptions="Center" />
           <Label
               Text=""
               SemanticProperties.HeadingLevel="Level2"
               SemanticProperties.Description=""
               FontSize="18"
               HorizontalOptions="Center" 
               x:Name="LblTesto"
               />
           <Button
               x:Name="BtnVerifica"
               Text="Verifica"
               SemanticProperties.Hint=""
               Clicked="BtnVerifica_Clicked"
               HorizontalOptions="Center" />
       </VerticalStackLayout>
   </ScrollView>

Stesura del codice


A questo punto terminata la preparazione della form, con i vari controlli, non resta che scrivere il codice per la gestione della connessione.
Passiamo in visualizzazione codice dell’evento click del pulsante, in tale evento andremo a verificare se il dispositivo è collegato e che tipo di collegamento.
Tramite la classe “Connectivity” possiamo gestire le varie informazioni, in particolare tramite la proprietà “NetworkAccess” verifichiamo se è collegato ad internet o altro dispositivo, mentre tramite la proprietà “ConnectionProfiles” rileviamo se è collegato a Wifi, cellulare o altro.
Di seguito si riporta il frammento di codice per l’evento click del pulsante.

C#
private void BtnVerifica_Clicked(object sender, EventArgs e)
   {
       NetworkAccess TipoRete = Connectivity.Current.NetworkAccess;
       if (TipoRete == NetworkAccess.Internet)
       {
           LblTesto.Text = "Collegato ad internet";
       }
       IEnumerable<ConnectionProfile> profiles = Connectivity.Current.ConnectionProfiles;
       if (profiles.Contains(ConnectionProfile.WiFi))
       {
           LblTesto.Text += " Wifi";
       }
   }

Terminata la stesura del codice, eseguiamo il nostro codice nell’emulatore e verifichiamo la corretta del codice.

Terminata la prova, ritorniamo a scrivere il codice per gestire i cambiamenti di stato della connessione internet.
Nel costruttore della nostra pagina “MainPage”, dopo la riga di codice di inizializzazione, dobbiamo scrivere il gestore di evento per il cambiamento dello stato, che è “ConnectivityChanged”, in modo che ad ogni codice ci porta al gestore dell’evento.
In Visual Studio, l’evento viene creato dopo aver digitato += suggerendo il nome dell’evento, e che possiamo confermare tramite il pulsante “Invio”.
Di seguito si riporta il codice del gestore eventi nel costruttore della classe di “MainPage”.

C#
public MainPage()
{
 InitializeComponent();
       Connectivity.ConnectivityChanged += Connectivity_ConnectivityChanged;
}

Nel gestore dell’evento verifichiamo il tipo di connessione, se è collegato ad internet oppure no.
Di seguito si riporta il codice per il gestore dell’evento per il cambiamento della connessione.

C#
private void Connectivity_ConnectivityChanged(object sender, ConnectivityChangedEventArgs e)
   {
       if (e.NetworkAccess == NetworkAccess.ConstrainedInternet)
           LblTesto.Text += "Accesso ad internet limitato.";
       else if (e.NetworkAccess != NetworkAccess.Internet)
           LblTesto.Text += " Nessun collegamento ad internet.";
       LblTesto.Text += " Connessione di tipo: "  ;
       foreach (var tipoConnessione in e.ConnectionProfiles)
       {
           switch (tipoConnessione)
           {
               case ConnectionProfile.Bluetooth:
                   LblTesto.Text += " Bluetooth" ;
                   break;
               case ConnectionProfile.Cellular:
                   LblTesto.Text +=  "Cellulare" ;
                   break;
               case ConnectionProfile.Ethernet:
                   LblTesto.Text += " Cavo di rete.";
                   break;
               case ConnectionProfile.WiFi:
                   LblTesto.Text += " WiFi.";
                   break;
               default:
                   break;
           }
       }
    }

Per simulare il cambiamento di connessione nell’emulatore, in alto dove c’è il simbolo della rotella, portare giù la finestra delle opzioni, e nella voce “Internet”, fare click in modo che apre la finestra delle connessioni, in questo modo disattiviamo o riattiviamo la connessione “Wifi” tramite il pulsante, il tutto come mostrato in figura 2.

Figura 2 – La gestione delle connessioni nell’emulatore.

Figura 2 – La gestione delle connessioni nell’emulatore.

Conclusioni


Ora non resta che testare il frammento di codice per il cambiamento di stato della connessione di internet, per verificarne.
In questo articolo è stato illustrato all’utente come gestire le connessioni nelle proprie applicazioni.
Una funzionalità che può tornare utile in quelle fasi di trasferimento dei dati, oppure si deve capire la tipologia di collegamento del dispositivo.
Con il framework MAUI, lo sviluppo di applicazioni su più sistemi operativi è diventato molto semplificativo e tramite le numerose classi si possono scrivere progetti anche complessi in maniera molto semplificata.
Si ricorda che per gestire la connessione internet, occorre inserire nel file “AndroidManifest.XML” il parametro per la gestione delle connessioni :


<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />  

anche se per default è sempre presente.