Location Permission nello sviluppo mobile: cos'è, livelli di accesso e principio di funzionamento

Autore: IT Sectr Pubblicato: 2026-05-21 Tempo di lettura: 8 min

Location Permission è un'autorizzazione che un'applicazione mobile richiede all'utente per accedere ai dati sulla sua posizione geografica. Senza questa autorizzazione, l'applicazione non può determinare le coordinate del dispositivo e quindi non può fornire funzionalità di geolocalizzazione. Secondo Apple Developer Documentation, 2024, tutte le applicazioni che utilizzano servizi di geolocalizzazione sono obbligate a richiedere il consenso esplicito dell'utente tramite un dialogo di sistema.

Punti chiave

  • Location Permission — un'autorizzazione obbligatoria per accedere alla geolocalizzazione del dispositivo nelle applicazioni mobili.
  • I livelli di accesso si dividono in sfondo e durante l'uso dell'applicazione su entrambe le piattaforme.
  • Android utilizza ACCESS_FINE_LOCATION e ACCESS_COARSE_LOCATION per la determinazione precisa e approssimativa delle coordinate.
  • iOS richiede l'aggiunta delle chiavi NSLocationWhenInUseUsageDescription e NSLocationAlwaysUsageDescription in Info.plist.
  • La richiesta di autorizzazione deve contenere una spiegazione chiara del motivo per cui l'applicazione ha bisogno dei dati di localizzazione.

Cos'è Location Permission?

Location Permission è un meccanismo del sistema operativo che regola l'accesso delle applicazioni ai dati sulla posizione geografica del dispositivo. Senza il consenso esplicito dell'utente, l'applicazione non può ottenere coordinate GPS, dati di reti Wi-Fi o informazioni sulle torri cellulari.

Le piattaforme mobili Android e iOS implementano il proprio sistema di autorizzazioni, ma la logica generale è la stessa: l'applicazione dichiara le autorizzazioni necessarie nel manifest o file di configurazione, poi le richiede a runtime. Secondo Android Developers, 2024, a partire da Android 10, tutte le autorizzazioni di geolocalizzazione appartengono alla categoria pericolose e richiedono una richiesta a runtime.

La ragione di questo approccio è la protezione della privacy degli utenti. I dati di localizzazione possono essere utilizzati per costruire percorsi di viaggio, determinare luoghi di lavoro e svago, nonché identificare la persona. Pertanto, entrambe le piattaforme richiedono una spiegazione trasparente nel dialogo di richiesta: l'applicazione deve indicare il motivo per cui necessita dell'accesso alla geolocalizzazione.

Perché è necessaria l'autorizzazione di geolocalizzazione

L'autorizzazione di geolocalizzazione è necessaria per qualsiasi applicazione la cui funzionalità dipenda dalla conoscenza della posizione fisica dell'utente. Mappe e navigazione, app di consegna, servizi meteorologici, social network con geotagging — tutte queste categorie di software richiedono Location Permission.

Senza questa autorizzazione, l'applicazione non può determinare le coordinate del dispositivo con nessuno dei metodi disponibili: né tramite il modulo GPS, né tramite scansione Wi-Fi, né tramite posizionamento tramite torri cellulari. L'utente può revocare l'autorizzazione in qualsiasi momento nelle impostazioni di sistema, dopo di che l'applicazione deve gestire correttamente il rifiuto.

Secondo uno studio del Pew Research Center (2024), circa il 45% degli utenti revoca l'accesso alla geolocalizzazione nelle applicazioni che non lo utilizzano per la loro funzionalità principale. Ciò significa che lo sviluppatore deve giustificare chiaramente la richiesta e offrire meccanismi alternativi per coloro che hanno rifiutato Location Permission.

Requisiti legali

Il GDPR in Europa e la Legge Federale 152-FZ in Russia richiedono l'ottenimento del consenso informato per il trattamento dei dati di localizzazione. L'applicazione non deve solo richiedere l'autorizzazione tramite il dialogo di sistema, ma anche fornire un avviso separato sugli scopi della raccolta dei dati. La violazione di questi requisiti comporta multe fino a 20 milioni di euro o al 4% del fatturato annuo dell'azienda.

Conseguenze della mancanza di autorizzazione

Se l'applicazione non richiede Location Permission o l'utente nega l'accesso, lo sviluppatore deve prevedere uno scenario alternativo. Per un'applicazione di mappe, potrebbe essere l'inserimento manuale dell'indirizzo; per un'app di consegna — la selezione da un elenco di indirizzi salvati; per un servizio meteorologico — la determinazione della città tramite indirizzo IP. Graceful degradation (degrado graduale) è una pratica standard raccomandata da Google e Apple.

Livelli di accesso alla geolocalizzazione

I livelli di accesso alla geolocalizzazione differiscono su Android e iOS, sebbene l'idea generale sia la stessa: più preciso è l'accesso, più severi sono i requisiti che la piattaforma impone all'applicazione.

Livello di accessoAndroidiOS
Durante l'usoSolo quando l'app è attivaWhen In Use — solo nell'app
In backgroundAlways — costantemente, anche in backgroundAlways — richiede revisione aggiuntiva App Store
ApprossimativoACCESS_COARSE_LOCATION (precisione fino a 500 m)Con opzione Precision = Off (iOS 14+)

ACCESS_FINE_LOCATION e ACCESS_COARSE_LOCATION su Android

ACCESS_FINE_LOCATION fornisce accesso a coordinate GPS precise con un margine di errore fino a diversi metri. Per dichiarare questa autorizzazione nel manifest, si usa la costante android.permission.ACCESS_FINE_LOCATION. ACCESS_COARSE_LOCATION, invece, fornisce una posizione approssimativa con una precisione fino a 500 metri basata su dati Wi-Fi e torri cellulari.

When In Use e Always su iOS

When In Use permette all'applicazione di ricevere coordinate solo quando è aperta sullo schermo. Always fornisce accesso alla geolocalizzazione anche in background, ma richiede una revisione obbligatoria da parte dell'App Store. A partire da iOS 14, l'utente può disabilitare separatamente il posizionamento preciso per ogni applicazione tramite l'interruttore Precision.

Richiedere Location Permission su Android

La richiesta di Location Permission su Android avviene in due fasi: dichiarazione delle autorizzazioni nel manifest e richiesta a runtime nel codice. A partire da Android 6.0 (API 23), tutte le autorizzazioni pericolose vengono richieste durante l'esecuzione dell'applicazione, non durante l'installazione.

Dichiarazione nel manifest

Il primo passo è aggiungere le autorizzazioni necessarie al file AndroidManifest.xml. Costanti diverse vengono utilizzate per il posizionamento preciso e approssimativo.

xml
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />

Richiesta a runtime in Kotlin

Dopo la dichiarazione nel manifest, il dialogo di sistema per la richiesta di autorizzazione deve essere chiamato nel codice dell'applicazione. Vediamo un esempio in Kotlin utilizzando Activity Result API.

kotlin
private val locationPermissionRequest =
    registerForActivityResult(ActivityResultContracts.RequestMultiplePermissions()) { permissions ->
    when {
        permissions.getOrDefault(Manifest.permission.ACCESS_FINE_LOCATION, false) -> {
            // Autorizzazione concessa
            getLocation()
        }
        permissions.getOrDefault(Manifest.permission.ACCESS_COARSE_LOCATION, false) -> {
            // Solo posizione approssimativa
            getCoarseLocation()
        }
        else -> {
            // Utente ha rifiutato
            showLocationExplanation()
        }
    }
}

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)
    checkLocationPermission()
}

Gestione del rifiuto e nuova richiesta

Se l'utente nega l'accesso, il sistema Android non permette di mostrare nuovamente il dialogo automaticamente. Lo sviluppatore deve chiamare shouldShowRequestPermissionRationale per mostrare una spiegazione preliminare. In caso di rifiuto ripetuto con il flag Never Ask Again, l'utente deve essere reindirizzato alle impostazioni di sistema.

kotlin
private fun checkLocationPermission() {
    when {
        ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) ==
            PackageManager.PERMISSION_GRANTED -> {
            getLocation()
        }
        ActivityCompat.shouldShowRequestPermissionRationale(this,
            Manifest.permission.ACCESS_FINE_LOCATION) -> {
            showRationaleDialog {
                requestLocationPermission()
            }
        }
        else -> {
            openAppSettings()
        }
    }
}

Richiedere Location Permission su iOS

La richiesta di Location Permission su iOS richiede l'aggiunta di chiavi speciali al file Info.plist e la chiamata di metodi della classe CLLocationManager. Apple presta particolare attenzione alla privacy, quindi il testo di spiegazione nel dialogo di richiesta deve essere il più specifico possibile.

Configurazione di Info.plist

Per richiedere la posizione su iOS, è necessario aggiungere una o entrambe le chiavi a Info.plist: NSLocationWhenInUseUsageDescription per l'accesso durante l'uso e NSLocationAlwaysAndWhenInUseUsageDescription per l'accesso in background. Il valore di ogni chiave è una stringa che verrà mostrata all'utente nel dialogo.

xml
<key>NSLocationWhenInUseUsageDescription</key>
<string>La tua app ha bisogno della tua posizione per mostrare i punti vicini sulla mappa.</string>
<key>NSLocationAlwaysAndWhenInUseUsageDescription</key>
<string>La tua app ha bisogno dell'accesso alla geolocalizzazione in background per tracciare il percorso.</string>

Richiesta in Swift

Nel codice Swift, la richiesta viene effettuata tramite un'istanza di CLLocationManager. A seconda del livello di accesso richiesto, viene chiamato requestWhenInUseAuthorization o requestAlwaysAuthorization.

swift
import CoreLocation

class LocationManager: NSObject, CLLocationManagerDelegate {
    private let manager = CLLocationManager()

    func requestLocationAccess() {
        manager.delegate = self
        manager.requestWhenInUseAuthorization()
    }

    func locationManagerDidChangeAuthorization(_ manager: CLLocationManager) {
        switch manager.authorizationStatus {
        case .authorizedWhenInUse, .authorizedAlways:
            startLocationUpdates()
        case .denied, .restricted:
            showSettingsAlert()
        case .notDetermined:
            break
        }
    }
}

Differenza tra le piattaforme

A differenza di Android, iOS non fornisce allo sviluppatore un metodo per verificare shouldShowRequestPermissionRationale. Il sistema decide autonomamente quando mostrare la spiegazione. Inoltre, su iOS l'utente può modificare l'autorizzazione solo tramite le impostazioni di sistema — l'applicazione non può ri-mostrare il dialogo di sistema dopo che l'utente ha fatto una scelta. RequestAlwaysAuthorization richiede prima When In Use e poi, dopo aver ottenuto il primo consenso, un dialogo separato per l'accesso in background.

Buone pratiche con la geolocalizzazione

Le buone pratiche con Location Permission aiutano a ridurre i rifiuti degli utenti e a soddisfare i requisiti degli store di applicazioni. Google e Apple hanno pubblicato raccomandazioni il cui rispetto aumenta la probabilità di approvazione dell'applicazione.

Richiedi l'autorizzazione nel contesto

Non mostrare il dialogo di richiesta di Location Permission immediatamente all'avvio dell'applicazione. Un utente che ha appena aperto l'app non capisce ancora perché deve fornire l'accesso alla geolocalizzazione. Contextual request significa che il dialogo appare nel momento in cui l'utente ha effettivamente bisogno di una funzione che richiede l'autorizzazione. Ad esempio, quando si clicca sul pulsante “Trova il negozio più vicino”.

Spiega il motivo in anticipo

Prima del dialogo di sistema, mostra la tua schermata di spiegazione (pre-permission screen). Su di essa, spiega perché l'app ha bisogno della geolocalizzazione, quali dati vengono raccolti e come verranno utilizzati. Dopo che l'utente ha cliccato su “Consenti” sulla tua schermata, mostra il dialogo di sistema. Secondo Appsflyer (2024), questo approccio aumenta il tasso di approvazione del 25-35%.

Non richiedere Always inutilmente

L'accesso in background alla geolocalizzazione è necessario solo per le applicazioni che funzionano in background: navigatori, tracker di attività, app di consegna. Se la tua applicazione ha bisogno di coordinate solo quando lo schermo è aperto, richiedi When In Use. L'App Store rifiuterà l'applicazione se Always non è giustificato funzionalmente. Su Android, l'accesso in background è ulteriormente regolato dall'autorizzazione ACCESS_BACKGROUND_LOCATION.

Domande frequenti

Cosa succede se l'utente rifiuta Location Permission?

L'applicazione deve gestire correttamente il rifiuto e offrire uno scenario alternativo. Ad esempio, l'inserimento manuale dell'indirizzo o la determinazione della città tramite indirizzo IP. Il dialogo di sistema non viene mostrato di nuovo — è necessario reindirizzare l'utente alle impostazioni.

Si può richiedere Location Permission senza spiegazione?

Tecnicamente, sì — il dialogo di sistema può essere attivato senza una schermata preliminare. Tuttavia, il tasso di approvazione senza spiegazione è del 30-40%, mentre con una schermata preliminare è del 60-75%. Apple e Google raccomandano di spiegare sempre il motivo della richiesta.

Come verificare lo stato di Location Permission su Android?

Usa ContextCompat.checkSelfPermission con la costante Manifest.permission.ACCESS_FINE_LOCATION. Il metodo restituisce PERMISSION_GRANTED o PERMISSION_DENIED, consentendo di determinare lo stato corrente senza chiamare il dialogo di sistema.

Qual è la differenza tra ACCESS_FINE_LOCATION e ACCESS_COARSE_LOCATION?

ACCESS_FINE_LOCATION fornisce accesso a coordinate GPS precise con un errore di 3-10 metri. ACCESS_COARSE_LOCATION fornisce una posizione approssimativa con una precisione fino a 500 metri basata su Wi-Fi e torri cellulari. Su Android 12+, lo sviluppatore può richiedere entrambe le autorizzazioni contemporaneamente.

Location Permission è necessario per gli scanner BLE?

Su Android, per scansionare dispositivi BLE è necessario ACCESS_FINE_LOCATION o ACCESS_COARSE_LOCATION, poiché i segnali BLE possono essere utilizzati per la triangolazione della posizione. Su iOS, per BLE è sufficiente l'autorizzazione Bluetooth — Location Permission non è necessario.

Riepilogo

  • Location Permission — un meccanismo chiave di protezione della privacy che regola l'accesso delle applicazioni alla geolocalizzazione del dispositivo.
  • I livelli di accesso includono Durante l'uso (When In Use) e Sfondo (Always) su iOS, nonché Preciso (ACCESS_FINE_LOCATION) e Approssimativo (ACCESS_COARSE_LOCATION) su Android.
  • Android richiede la dichiarazione delle autorizzazioni nel manifest e la richiesta a runtime tramite Activity Result API a partire dall'API 23.
  • iOS richiede l'aggiunta di chiavi in Info.plist e la chiamata di metodi CLLocationManager con indicazione obbligatoria del motivo nel testo della richiesta.
  • Contextual request — una buona pratica in cui il dialogo appare al momento del bisogno, non all'avvio dell'applicazione.
  • Pre-permission screen aumenta il tasso di approvazione del 25-35% secondo Appsflyer (2024).
  • Il rifiuto dell'utente richiede graceful degradation — uno scenario alternativo senza uso della geolocalizzazione.

Svilupperemo un'applicazione mobile chiavi in mano

IT Sectr crea applicazioni iOS e Android per startup e aziende dal 2017. Ti consulteremo e ti proporremo la soluzione migliore.

Discuti il progetto

Leggi anche