loading experience

.NET MAUI

.NET MAUI: permessi e API del dispositivo

Fotocamera, posizione, file e connettività con un'unica API C#, chiedendo i permessi nel modo giusto.

.NET MAUI: permessi e API del dispositivo

.NET MAUI espone le funzioni del dispositivo con API comuni a tutte le piattaforme: posizione, fotocamera, file, connettività, informazioni sul dispositivo. Prima di usarle, però, servono i permessi.

L'app deve funzionare anche quando l'utente dice di no.
L'app deve funzionare anche quando l'utente dice di no.

Chiedere un permesso

public async Task<Location?> PosizioneAttualeAsync()
{
    var stato = await Permissions.CheckStatusAsync<Permissions.LocationWhenInUse>();
    if (stato != PermissionStatus.Granted)
        stato = await Permissions.RequestAsync<Permissions.LocationWhenInUse>();

    if (stato != PermissionStatus.Granted)
        return null; // l'utente ha rifiutato: l'app deve continuare a funzionare

    return await Geolocation.Default.GetLocationAsync(
        new GeolocationRequest(GeolocationAccuracy.Medium, TimeSpan.FromSeconds(10)));
}

Su Android e iOS i permessi vanno anche dichiarati nei file della piattaforma (AndroidManifest.xml e Info.plist), con una spiegazione chiara del motivo: gli store la controllano.

Scegliere una foto

var foto = await MediaPicker.Default.PickPhotoAsync();
if (foto is not null)
{
    await using var flusso = await foto.OpenReadAsync();
    await _upload.InviaAsync(flusso, foto.FileName);
}

Connettività

if (Connectivity.Current.NetworkAccess != NetworkAccess.Internet)
{
    await Shell.Current.DisplayAlert("Offline", "I dati verranno inviati appena torni online.", "OK");
}

Buone pratiche

  • Chiedi i permessi solo quando servono, nel contesto in cui l'utente capisce perché.
  • Gestisci sempre il rifiuto: l'app non deve bloccarsi.
  • Per funzioni non coperte dalle API comuni, usa codice specifico per piattaforma nelle cartelle Platforms o classi parziali.
Commenti (0)

Nessun commento ancora.

Lascia un commento