Immuni e il GPS (2)

Ieri ho scritto un post presentando tre domande ai miei amici più esperti, dai quali mi sono piovuti addosso link e documenti e li ringrazio tutti collettivamente; ho anche fatto un paio di telefonate all’estero (una in Argentina e una in Germania) per sentire l’opinione di due persone che ritengo – ancorché generalmente fuori di senno – estremamente competenti su questo genere di cose.

Le risposte sono arrivate (o almeno io ne sono abbastanza soddisfatto) ma ovviamente hanno richiesto di guadare pagine e pagine di documenti e discussioni tecniche che vanno ben oltre il mio livello; le troverete linkate per supportare le mie interpretazioni, ma non posso escludere di avere commesso errori in buona fede.

Le tre domande

Riassumo per comodità le tre domande poste ieri:

  1. Perché BT normale non richiede la permission GPS e BLE invece sì?
  2. Perché su iOs non è necessaria la permission GPS che invece è necessaria su Android?
  3. Se lo scopo di BLE è consumare di meno, che senso ha richiedere il GPS acceso (che lo vanificherebbe completamente)?

Le risposte

La risposta a tutte e tre le domande deve essere ricollegata al fatto che per minimizzare le necessità energetiche, BLE si appoggia sulla piattaforma Beacon (concepita per interrogare sensori di prossimità a basso consumo) per effettuare la cosiddetta discovery, ovverossia identificare dispositivi con cui accoppiarsi per poi scambiare dati. Tra i dati scambiati con questi ipotetici dispositivi c’è anche la posizione degli stessi che perciò potrebbe essere usata per determinare – almeno grossolanamente – la posizione dell’utente.

Dalla versione 8 è stata riconosciuta la necessità di una API specifica che consentisse la discovery senza accesso alla geolocalizzazione ed è stata introdotta la Companion Device Manager API; la Guida per gli sviluppatori infatti ci dice che:

Because discoverable devices might reveal information about the user’s location, the device discovery process requires location access. If your app is being used on a device that runs Android 8.0 (API level 26) or higher, use the Companion Device Manager API. This API performs device discovery on your app’s behalf, so your app doesn’t need to request location permissions.

Per i non anglofoni, “[…] su dispositivi che funzionano con la versione di Android 8 e successive utilizzate la Companion Device Manager API che esegue la scoperta senza richiedere la permission relativa alla posizione […]”

Dunque la risposta 1 è che BLE e BT sono diversi (quest’ultimo non usa Beacons) mentre la risposta alle domande 2 e 3 coincide perché è legata alla possibilità che la app venga installata su uno smartphone ormai vecchiotto: per non escluderli è stato scelto di supportare la API più “vecchia” che funziona su tutte le versioni, a prezzo però di richiedere una permission in più e con consumi energetici maggiori.

Conclusione

Si poteva evitare tutto questo casino (polemiche, servizi su Report, ecc.) ?

Effettivamente i dispositivi che hanno una versione successiva alla 8 non sono la totalità, ma al momento in cui scriviamo questo articolo rappresentano oltre l’80% del parco a livello mondiale e l’85% in Italia.

Al posto degli sviluppatori avrei forse scelto di supportare per default la API più moderno (e più rispettosa della privacy), avvertendo gli altri che:

Attenzione: stai installando la app su una versione di Android antecedente alla 8 e pertanto ti verrà richiesto il permesso di lettura della posizione, anche se questo dato NON viene utilizzato.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s