Android si impegna ad aiutare gli utenti a sfruttare le ultime innovazioni, garantendo al contempo le massime priorità in materia di sicurezza e privacy.
Alcune best practice descritte in questa pagina sono disponibili anche nella scheda di riferimento.
Prestare attenzione alle autorizzazioni
Stabilisci un rapporto di fiducia con i tuoi utenti garantendo trasparenza e consentendo agli utenti di controllare l'esperienza con la tua app.
Richiedi le autorizzazioni minime necessarie per la funzionalità. Ogni volta che apporti modifiche importanti all'app, esamina le autorizzazioni richieste per confermare che le funzionalità della tua app ne abbiano ancora bisogno.
- Tieni presente che spesso le versioni più recenti di Android introducono dei modi per accedere ai dati nel rispetto della privacy senza richiedere autorizzazioni. Per ulteriori informazioni, consulta l'articolo Valutare se la tua app deve dichiarare autorizzazioni.
- Se la tua app è distribuita su Google Play, Android viaggi indica la percentuale di utenti che negano le autorizzazioni nell'app. Utilizza questi dati per rivalutare la progettazione di funzionalità le cui autorizzazioni obbligatorie sono più comunemente negate.
Segui la procedura consigliata per spiegare il motivo per cui una funzionalità nella tua app richiede un'autorizzazione. Richiedi l'autorizzazione quando è necessario, anziché all'avvio dell'app, in modo che l'autorizzazione sia chiara per gli utenti.
Tieni presente che gli utenti o il sistema possono negare l'autorizzazione più volte. Android rispetta questa scelta dell'utente ignorando le richieste di autorizzazione dalla stessa app.
Esegui la riduzione controllata per gli utenti che negano o revocano un'autorizzazione. Ad esempio, puoi disattivare la funzionalità di input vocale della tua app se l'utente non concede l'autorizzazione per il microfono.
Quando aggiorni l'app, rimuovi l'accesso dell'app per tutte le autorizzazioni di runtime di cui non ha più bisogno.
Se utilizzi un SDK o una libreria che accede a dati protetti da autorizzazioni pericolose, in genere gli utenti lo attribuiscono alla tua app. Assicurati di comprendere le autorizzazioni richieste dagli SDK e il motivo.
- Se testi l'app su Android 11 (livello API 30), utilizzacontrollo dell'accesso ai dati per individuare i luoghi nel codice e nel codice della libreria di terze parti da cui viene eseguito l'accesso ai dati privati.
Riduci al minimo l'utilizzo della posizione
Se la tua app può supportare i suoi casi d'uso senza richiedere dati sulla posizione, non richiedere autorizzazioni di accesso alla posizione. Se la tua app richiede l'autorizzazione per accedere alla posizione, aiuta gli utenti a prendere una decisione consapevole.
- Se l'app deve raccogliere informazioni sulla posizione, spiega agli utenti in che modo usa queste informazioni per offrire loro vantaggi specifici.
- Se la tua app deve accoppiare il dispositivo dell'utente con un dispositivo nelle vicinanze tramite Bluetooth o Wi-Fi, utilizza Gestione dispositivi companion che non richiede autorizzazioni di accesso alla posizione.
- Controlla il livello di granularità della posizione di cui la tua app ha bisogno. L'accesso alla posizione approssimativa è sufficiente per soddisfare la maggior parte dei casi d'uso correlati alla posizione.
- Accedere ai dati sulla posizione mentre l'app è visibile all'utente. In questo modo, gli utenti possono capire meglio perché la tua app richiede informazioni sulla posizione.
- Se la tua app richiede la posizione in background, ad esempio durante l'implementazione della geofencing, assicurati che sia fondamentale per la sua funzionalità di base e che sia eseguita in modo chiaro per gli utenti. Scopri di più sulle considerazioni per l'utilizzo della posizione in background.
- Su Android 10 (livello API 29) e versioni successive, gli utenti possono limitare l'accesso alla posizione durante l'utilizzo dell'app. Progetta l'app in modo che si degradi quando non ha sempre accesso alla posizione.
- Se la tua app deve mantenere l'accesso alla posizione per un'attività in corso avviata dall'utente dopo che quest'ultimo esce dall'interfaccia utente dell'app, avviare un servizio in primo piano prima che l'app passi in background. Puoi farlo in uno dei callback del ciclo di vita di Android, come
onPause()
. - Non avviare i servizi in primo piano dallo sfondo. Potresti, invece, avviare l'app da una notifica e quindi eseguire il codice di posizione quando l'interfaccia utente dell'app diventa visibile.
Gestisci i dati in tutta sicurezza
Nota: puoi scoprire di più sui dati considerati sensibili nella pagina relativa all'articolo Dati utente del Centro norme per gli sviluppatori di Google Play.
Gestisci i dati sensibili in modo trasparente e sicuro.
- Fai in modo che gli utenti sappiano quando e perché l'app raccoglie, utilizza o condivide dati sensibili.
- Se possibile, utilizza il modello di archiviazione con ambito. Scopri come eseguire la migrazione allo spazio di archiviazione con ambito a seconda dei casi d'uso dell'app.
- Utilizza sempre connessioni di rete sicure. Per i dati at-rest dell'app, utilizza la crittografia delle credenziali integrata di Android. Per i dati in transito, utilizza TLS, il successore di SSL, per tutti i dati trasmessi indipendentemente dalla sensibilità.
- Inserisci i file che contengono dati sensibili nella directory privata dell'app all'interno della memoria interna.
- Su Android 10 (livello API 29), archivia i file pertinenti solo per la tua app nella directory specifica dell'app nella memoria esterna. Scopri di più sull'archiviazione con ambito.
- Se devi trasmettere dati sensibili a un'altra app, utilizza un intent esplicito. Concedi l'accesso una tantum ai dati per limitare ulteriormente l'accesso dell'altra app.
- Anche quando l'app è in primo piano, mostra un'indicazione in tempo reale che stai acquisendo dal microfono o dalla fotocamera. Tieni presente che Android 9 (livello API 28) e versioni successive non consentono l'accesso al microfono o alla fotocamera quando l'app è in background.
- Non includere dati sensibili nei messaggi di logcat o nei file di log dell'app. Scopri di più su come gestire i dati utente.
Jetpack offre diverse librerie per mantenere più sicuri i dati della tua app. Scopri di più nelle guide relative all'utilizzo della libreria di sicurezza Jetpack e della libreria Preferenze Jetpack.
Utilizzare identificatori reimpostabili
Rispetta la privacy degli utenti e utilizza identificatori reimpostabili. Per scoprire di più, consulta le best practice per gli identificatori univoci.
- Non accedere a IMEI o al numero di serie del dispositivo, poiché questi identificatori sono permanenti. Se provi ad accedere a questi identificatori in un'app che ha come target Android 10 (livello API 29) o versioni successive, viene eseguita una
SecurityException
. - Utilizza un ID pubblicità solo per la profilazione di utenti o per i casi d'uso degli annunci. Per le app in Google Play, questo è un requisito, Rispetta sempre le preferenze degli utenti relative al monitoraggio degli annunci per la personalizzazione.
- Nella maggior parte dei casi d'uso non relativi agli annunci, utilizza un ID univoco a livello globale (GUID) limitato nell'ambito di un'app.
- Utilizza le impostazioni di sicurezza dell'ID Android (SSAID) per condividere lo stato tra le app di tua proprietà senza richiedere all'utente di accedere a un account. Scopri di più su come monitorare le preferenze di accesso degli utenti tra le app.