Best practice relative alle autorizzazioni app

Le richieste di autorizzazione proteggono le informazioni sensibili disponibili su un dispositivo e deve essere utilizzato solo quando l'accesso alle informazioni è necessario per del funzionamento della tua app. Questo documento fornisce suggerimenti su come potresti essere in grado di ottenere la stessa funzionalità (o una migliore) senza richiedere l'accesso a tali informazioni; non si tratta di un'analisi esaustiva di come le autorizzazioni funzionano nel sistema operativo Android.

Per informazioni più generali sulle autorizzazioni Android, consulta Panoramica delle autorizzazioni. Per maggiori dettagli su come utilizzare le autorizzazioni nel tuo codice, consulta la sezione Richiesta di autorizzazioni app.

Autorizzazioni in Android 6.0 e versioni successive

In Android 6.0 (livello API 23) e versioni successive, le app possono richiedere autorizzazioni a all'utente in fase di runtime, anziché prima dell'installazione. In questo modo le app richiedere le autorizzazioni quando l'app richiede effettivamente i servizi o i dati protette dai servizi. Anche se questa operazione non influisce (necessariamente) nel complesso dell'app il comportamento dei dati sensibili, comporta alcune modifiche viene gestito:

Aumento del contesto situazionale

Agli utenti viene chiesta l'autorizzazione in fase di runtime, nel contesto della tua app, per accedere alle funzionalità coperte da questi gruppi di autorizzazioni. Gli utenti sono più sensibile al contesto in cui viene richiesta l'autorizzazione e in caso di mancata corrispondenza tra la richiesta e lo scopo della tua app, è anche più importante, per spiegare in modo dettagliato all'utente il motivo per cui stai richiedendo l'autorizzazione. Se possibile, devi fornire la spiegazione della sua richiesta sia al momento della stessa finestra di dialogo di follow-up se l'utente rifiuta la richiesta.

Per aumentare la probabilità che una richiesta di autorizzazione venga accettata, quando è richiesta una funzionalità specifica. Ad esempio, chiedi solo per il microfono quando un utente fa clic sul pulsante del microfono. Gli utenti hanno maggiori probabilità di consentire l'autorizzazione prevista.

Maggiore flessibilità nella concessione delle autorizzazioni

Gli utenti possono negare l'accesso a singole autorizzazioni nel momento in cui vengono richieste e nelle impostazioni, ma potrebbero comunque rimanere sorpresi quando la funzionalità viene potrebbe non funzionare correttamente. È una buona idea controllare quanti utenti negano autorizzazioni (ad es. utilizzando Google Analytics) per eseguire il refactoring evitare in base a questa autorizzazione o fornire una migliore spiegazione del motivo per cui hai bisogno dell'autorizzazione per il corretto funzionamento dell'app. Tu devi anche assicurarti che l'app gestisca le eccezioni quando gli utenti negare le richieste di autorizzazione o disattivare le autorizzazioni nelle impostazioni.

Aumento del carico delle transazioni

Agli utenti viene richiesto di concedere l'accesso ai gruppi di autorizzazioni individualmente e non come set. Questo rende estremamente importante ridurre al minimo il numero di autorizzazioni richiesta. Ciò aumenta il carico degli utenti per la concessione delle autorizzazioni, aumenta la probabilità che almeno una delle richieste venga rifiutata.

Autorizzazioni che richiedono di diventare un gestore predefinito

Alcune app dipendono dall'accesso a informazioni sensibili dell'utente relative ai registri chiamate e SMS. Se vuoi richiedere autorizzazioni specifiche per i registri chiamate e SMS e pubblicare la tua app sul Play Store, devi inserire all'utente di impostare l'app come gestore predefinito per una funzione di sistema di base prima richiedendo queste autorizzazioni di runtime.

Per ulteriori informazioni sui gestori predefiniti, incluse le indicazioni sulla visualizzazione di un richiesta relativa al gestore predefinito agli utenti, consulta la guida sulle autorizzazioni utilizzate solo in e gestori predefiniti.

Conoscere le librerie con cui si lavora

A volte le autorizzazioni sono richieste dalle librerie che utilizzi nella tua app. Per Ad esempio, le librerie di annunci e analisi potrebbero richiedere l'accesso ai LOCATION gruppo di autorizzazioni per implementare la richiesta funzionalità. Ma dal punto di vista dell'utente, la richiesta di autorizzazione arriva dalla tua app, non dalla raccolta.

Così come gli utenti selezionano le app che usano meno autorizzazioni funzionalità, gli sviluppatori devono esaminare le librerie e selezionare SDK di terze parti che non utilizzano autorizzazioni non necessarie. Ad esempio, se stai utilizzando una libreria che offre funzionalità di localizzazione, assicurati di non stai richiedendo l'autorizzazione FINE_LOCATION a meno che tu non utilizzando la funzionalità di targeting basato sulla località.

Limita l'accesso alla posizione in background

Quando l'app è in esecuzione in background, accedi a posizione deve essere fondamentale per le funzionalità di base dell'app e mostrare un chiaro vantaggio agli utenti.

Testa entrambi i modelli di autorizzazione

In Android 6.0 (livello API 23) e versioni successive, gli utenti concedono e revocano l'accesso le autorizzazioni in fase di esecuzione, invece di farlo durante l'installazione dell'app. Come dovrai testare l'app in un maggior numero di condizioni. Precedente ad Android 6.0, potreste ragionevolmente presumere che se la vostra app è in esecuzione tutte le autorizzazioni che dichiara nel file manifest dell'app. Ora l'utente Possono attivare o disattivare le autorizzazioni per qualsiasi app, indipendentemente dal livello API. Dovresti verificare che la tua app funzioni correttamente in vari scenari di autorizzazione.

I seguenti suggerimenti ti aiuteranno a individuare i problemi con il codice relativi alle autorizzazioni su dispositivi con livello API 23 o superiore:

  • Identifica le autorizzazioni attuali della tua app e i relativi percorsi di codice.
  • Testare i flussi utente tra servizi e dati protetti da autorizzazione.
  • Esegui test con varie combinazioni di autorizzazioni concesse o revocate. Per Ad esempio, un'app della fotocamera potrebbe elencare CAMERA, READ_CONTACTS e ACCESS_FINE_LOCATION nel suo file manifest. Devi testare l'app con ognuna di queste autorizzazioni attivati e disattivati, per assicurarti che l'app possa gestire tutte le autorizzazioni le configurazioni in modo controllato.
  • Utilizza lo strumento adb per gestire autorizzazioni dalla riga di comando:
      .
    • Elenca le autorizzazioni e lo stato per gruppo:
      $ adb shell pm list permissions -d -g
    • Concedi o revoca una o più autorizzazioni:
      $ adb shell pm [grant|revoke] <permission-name> ...
  • Analizza la tua app per individuare i servizi che utilizzano le autorizzazioni.

Risorse aggiuntive