L'autorizzazione dei dati sanitari è il processo di ottenimento del consenso esplicito dell'utente per leggere e scrivere dati medici e di fitness tramite le API di sistema delle piattaforme mobili. Su iOS l'autorizzazione è implementata tramite HealthKit con le classi HKHealthStore e HKObjectType, mentre su Android tramite Google Fit API con OAuth 2.0 e FitnessOptions. Secondo Apple HealthKit Documentation, 2025, i dati sanitari sono classificati come categoria particolarmente sensibile. Precisione medica e conformità normativa sono requisiti fondamentali quando si lavora con tali dati.
Punti chiave
L'autorizzazione dei dati sanitari è un meccanismo che richiede il consenso esplicito e documentato dell'utente prima di accedere ai suoi parametri medici e di fitness. A differenza dei permessi standard (contatti, calendario), i dati sanitari sono soggetti a ulteriori norme legali: HIPAA negli Stati Uniti, GDPR in Europa e 152-FZ in Russia.
Su iOS l'autorizzazione sanitaria è implementata tramite HealthKit: l'utente vede una schermata con l'elenco di tutti i tipi di dati richiesti dall'app e può selezionare categorie specifiche a cui concedere l'accesso. Su Android si utilizza Google Fit API con autorizzazione tramite OAuth 2.0, dove per ogni tipo di dato viene richiesto uno scope separato.
Secondo App Annie (2025), le app per salute e fitness sono uno dei segmenti in più rapida crescita del mercato mobile, con un tasso di crescita annuo del 28%. Il 71% degli utenti nega l'accesso ai dati sanitari se l'app non fornisce una chiara spiegazione dello scopo della raccolta.
La differenza principale dell'autorizzazione sanitaria rispetto ad altri permessi è la possibilità di concedere un accesso parziale. L'utente può consentire la lettura dei passi ma negare l'accesso ai dati della frequenza cardiaca o alle cartelle cliniche.
HealthKit è un framework Apple, introdotto in iOS 8, che fornisce un archivio centralizzato unificato per i dati sanitari. Le app non hanno accesso diretto a HealthKit: richiedono l'autorizzazione tramite HKHealthStore e l'utente decide quali tipi di dati condividere. Tutti i dati sono crittografati sul dispositivo e sincronizzati tramite iCloud con crittografia end-to-end.
Il processo di autorizzazione inizia con la creazione di un'istanza di HKHealthStore e la chiamata al metodo requestAuthorization(toShare:read:). L'app passa due insiemi di tipi: per la lettura (HKObjectType che l'app vuole leggere) e per la scrittura (HKSampleType che l'app vuole salvare). Il sistema mostra una schermata di consenso in cui l'utente attiva o disattiva ogni tipo individualmente.
Una caratteristica importante: HealthKit non mostra allo sviluppatore quali tipi l'utente ha autorizzato nella schermata di consenso. Dopo la chiamata a requestAuthorization è necessario verificare individualmente l'accesso a ciascun tipo tramite HKHealthStore.authorizationStatus(for:). Secondo WWDC Session 11108 (2024), Apple raccomanda di controllare lo stato di autorizzazione prima di ogni operazione di lettura o scrittura.
HealthKit supporta centinaia di tipi di dati, suddivisi in categorie: quantità (passi, frequenza cardiaca, calorie), caratteristiche (altezza, peso, data di nascita), cartelle cliniche (allergie, vaccinazioni, risultati di analisi), sintomi e ciclo mestruale. Ogni tipo è rappresentato da una sottoclasse di HKObjectType: HKQuantityType per dati numerici e HKCategoryType per dati categoriali.
Con iOS 18 Apple ha esteso HealthKit per supportare i dati provenienti da strutture mediche tramite FHIR (Fast Healthcare Interoperability Resources). Le app possono richiedere l'accesso a cartelle cliniche strutturate se l'utente ha collegato il proprio ospedale o clinica all'app Salute.
Google Fit è una piattaforma per dati di fitness su Android che utilizza l'autorizzazione tramite OAuth 2.0. A differenza di HealthKit, Google Fit non è integrato a livello di sistema operativo — è un servizio separato di Google Play Services che richiede la registrazione tramite Google Play Console e la creazione di credenziali OAuth 2.0.
Per accedere a Google Fit, l'app deve registrare un OAuth 2.0 client ID in Google Cloud Console. L'autorizzazione viene richiesta tramite GoogleSignInAccount e GoogleSignIn.requestPermissions(). L'utente vede la schermata di consenso standard di Google con l'elenco degli scope richiesti: fitness.activity.read, fitness.body.read, fitness.nutrition.write e altri.
Google Fit separa i permessi di lettura e scrittura per ogni tipo di dato. L'app può richiedere l'accesso in lettura al conteggio dei passi senza richiedere i permessi di scrittura. A partire da Google Fit API v2, tutte le richieste di autorizzazione devono includere una descrizione dello scopo dell'utilizzo dei dati — senza questa la richiesta viene respinta dalla moderazione di Google.
La classe FitnessOptions consente di specificare in modo dichiarativo a quali tipi di dati è necessario accedere. Per ogni tipo è possibile impostare il livello di accesso: ACCESS_READ, ACCESS_WRITE o entrambi. L'insieme dei permessi viene passato a GoogleSignin.requestPermissions() insieme all'account dell'utente.
L'elenco dei tipi disponibili include: passi (DataType.TYPE_STEP_COUNT_DELTA), calorie (TYPE_CALORIES_EXPENDED), frequenza cardiaca (TYPE_HEART_RATE_BPM), distanza (TYPE_DISTANCE_DELTA), attività (TYPE_ACTIVITY_SEGMENT) e sonno (TYPE_SLEEP_SEGMENT). Ogni tipo ha la propria frequenza di aggiornamento e requisiti di autorizzazione.
L'implementazione della richiesta di autorizzazione ai dati sanitari differisce significativamente tra iOS e Android. Di seguito sono riportati esempi funzionanti per HealthKit e Google Fit API.
In Swift, la richiesta di autorizzazione HealthKit viene eseguita tramite HKHealthStore specificando i tipi per lettura e scrittura. L'esempio mostra la richiesta di accesso ai dati di passi e frequenza cardiaca.
import HealthKit
let healthStore = HKHealthStore()
let readTypes: Set<HKObjectType> = [
HKObjectType.quantityType(forIdentifier: .stepCount)!,
HKObjectType.quantityType(forIdentifier: .heartRate)!
]
let writeTypes: Set<HKSampleType> = [
HKObjectType.quantityType(forIdentifier: .stepCount)!
]
guard HKHealthStore.isHealthDataAvailable() else {
fatalError("HealthKit non è disponibile su questo dispositivo")
}
healthStore.requestAuthorization(toShare: writeTypes, read: readTypes) { success, error in
if success {
// Controlliamo lo stato di ogni tipo separatamente
let status = healthStore.authorizationStatus(for: readTypes.first!)
print("Autorizzazione HealthKit: \(status.rawValue)")
} else {
print("Errore di autorizzazione HealthKit: \(error?.localizedDescription ?? "sconosciuto")")
}
}
Su Android, l'autorizzazione Google Fit viene eseguita tramite GoogleSignIn e FitnessOptions. L'esempio mostra la richiesta di accesso ai dati di passi e calorie.
val fitnessOptions = FitnessOptions.builder()
.addDataType(DataType.TYPE_STEP_COUNT_DELTA, FitnessOptions.ACCESS_READ)
.addDataType(DataType.TYPE_CALORIES_EXPENDED, FitnessOptions.ACCESS_READ)
.build()
val account = GoogleSignIn.getAccountForExtension(this, fitnessOptions)
if (!GoogleSignIn.hasPermissions(account, fitnessOptions)) {
GoogleSignIn.requestPermissions(
this,
REQUEST_GOOGLE_FIT,
account,
fitnessOptions
)
} else {
// Permessi già concessi — leggiamo i dati
readGoogleFitData(account)
}
// Elaborazione del risultato della richiesta di permessi
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
if (requestCode == REQUEST_GOOGLE_FIT && resultCode == RESULT_OK) {
val account = GoogleSignIn.getSignedInAccountFromIntent(data)
account?.let { readGoogleFitData(it) }
}
}
I dati sanitari appartengono a una categoria particolarmente sensibile di dati personali. Gli sviluppatori di app che lavorano con HealthKit o Google Fit devono rispettare i requisiti normativi vigenti nella regione degli utenti.
Negli Stati Uniti, i dati sanitari sono regolati dalla legge HIPAA (Health Insurance Portability and Accountability Act), che stabilisce requisiti rigorosi per l'archiviazione, la trasmissione e l'elaborazione delle informazioni mediche. Le app che lavorano con HealthKit possono essere conformi a HIPAA se i dati vengono trasmessi al server in forma crittografata e l'accesso è limitato.
Nell'Unione Europea, i dati sanitari sono considerati una categoria speciale di dati personali ai sensi del GDPR (articolo 9). Il trattamento di tali dati richiede il consenso esplicito dell'utente e, nella maggior parte dei casi, una valutazione d'impatto sulla protezione dei dati. La violazione dei requisiti GDPR comporta sanzioni fino a 20 milioni di euro o al 4% del fatturato annuo globale dell'azienda.
In Russia, la raccolta di dati sanitari è regolata dalla legge 152-FZ «Sui dati personali». Dal 2025, tutte le app che elaborano dati medici di cittadini russi sono obbligate a utilizzare strumenti di crittografia certificati e a conservare i dati su server situati nel territorio della Federazione Russa, secondo i requisiti di Roskomnadzor.
Raccomandazione: prima di pubblicare un'app che lavora con dati sanitari, consultate l'ufficio legale per verificare la conformità alle normative locali. Apple e Google si riservano il diritto di rifiutare un'app se la sua politica sulla privacy non soddisfa i requisiti.
Domande frequenti
HealthKit è un framework iOS integrato con un archivio locale crittografato di dati sanitari. Google Fit è un servizio cloud basato su Google Play Services che utilizza OAuth 2.0 per l'autorizzazione. HealthKit funziona offline, Google Fit richiede una connessione Internet per la sincronizzazione.
Sì, su entrambe le piattaforme. Su iOS l'utente seleziona tipi specifici di dati (passi, frequenza cardiaca, sonno) nella schermata di consenso di HealthKit. Su Android l'utente vede l'elenco degli scope di Google Fit e può revocare singoli permessi tramite le impostazioni dell'account Google.
HKHealthStore è la classe centrale del framework HealthKit su iOS. Gestisce l'autorizzazione, la lettura e la scrittura di tutti i dati sanitari. L'app non può accedere direttamente all'archivio HealthKit — tutte le operazioni passano attraverso HKHealthStore, garantendo un'interfaccia di accesso unificata e il rispetto dei diritti di accesso dell'utente.
L'utente può revocare l'accesso tramite Impostazioni Google — Gestisci account — Sicurezza — App di terze parti con accesso. Selezionate l'app e fate clic su «Rimuovi accesso». È anche possibile revocare l'accesso tramite Google Play Console: Servizi collegati — Google Fit — Gestione app.
Se l'app elabora dati sanitari di utenti negli Stati Uniti e li trasmette a un server, la conformità HIPAA è obbligatoria. Se tutti i dati rimangono localmente sul dispositivo e non vengono trasmessi a terze parti, l'app potrebbe non essere conforme a HIPAA, ma Apple raccomanda di seguire le migliori pratiche di sicurezza indipendentemente dalla giurisdizione.
Riepilogo
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.
Leggi anche