Richiedere autorizzazioni su Wear OS

La richiesta di autorizzazioni su Wear OS è simile alla richiesta nelle app mobile, con un paio di casi d'uso aggiuntivi. Questo documento presuppone che tu abbia compreso come funzionano le autorizzazioni Android. In caso contrario, controlla come funzionano le autorizzazioni su Android.

Come in un'app mobile, l'utente deve concedere a un'app Wear le autorizzazioni per accedere a determinate funzionalità. Nelle app Wear, fornisci funzionalità significative senza richiedere alcuna autorizzazione.

Scenari di autorizzazioni

Esistono diversi scenari che potresti riscontrare quando richiedi autorizzazioni pericolose su Wear OS:

  • L'app Wear richiede le autorizzazioni per un'app in esecuzione sul dispositivo indossabile.

  • L'app Wear richiede le autorizzazioni per un'app in esecuzione sul telefono.

  • L'app Telefono richiede le autorizzazioni per un'app in esecuzione sul dispositivo indossabile.

  • L'app Telefono richiede più autorizzazioni che possono essere utilizzate solo quando il dispositivo indossabile è connesso.

Per visualizzare tutti questi scenari in un'app funzionante, esamina l'esempio di ExcersizeSampleCompose su GitHub.

Le sezioni seguenti spiegano ciascuno di questi scenari. Per informazioni più dettagliate sulla richiesta di autorizzazioni, consulta la sezione Pattern di richieste di autorizzazioni.

L'app Wear richiede l'autorizzazione per gli indossabili

Quando l'app Wear richiede l'autorizzazione per un'app in esecuzione sul dispositivo indossabile, il sistema mostra una finestra di dialogo per richiedere l'autorizzazione all'utente. Nell'app, richiedi le autorizzazioni solo quando all'utente è chiaro il motivo per cui sono necessarie per eseguire una determinata operazione.

Consulta i principi di autorizzazione per assicurarti di offrire la migliore esperienza agli utenti e ricorda di controllare shouldShowRequestPermissionRationale() e fornire informazioni aggiuntive, se necessario.

Se un'app o un quadrante richiede più di un'autorizzazione alla volta, le richieste di autorizzazione vengono visualizzate una dopo l'altra.

Più schermate di autorizzazione, una dopo l'altra.
Figura 1. Schermate di autorizzazione visualizzate in successione.

L'app Wear richiede l'autorizzazione di accesso al telefono

Quando l'app Wear richiede l'autorizzazione di accesso al telefono, ad esempio un'app indossabile vuole accedere a foto o altri dati sensibili nella versione mobile dell'app, l'app Wear deve indirizzare l'utente al telefono per accettare l'autorizzazione. In questi casi, l'app Telefono può fornire ulteriori informazioni all'utente utilizzando un'attività. Nell'attività, includi due pulsanti: uno per concedere l'autorizzazione e uno per negarla.

L'app Wear invia l'utente al telefono per concedere l'autorizzazione.
Figura 2. Invia l'utente al telefono per concedere l'autorizzazione.

L'app Telefono richiede l'autorizzazione per gli indossabili

Se l'utente sta utilizzando un'app per smartphone e l'app richiede un'autorizzazione indossabile, ad esempio per precaricare la musica nel caso in cui il telefono venga disconnesso, l'app per telefono reindirizza l'utente al dispositivo indossabile per accettare l'autorizzazione. La versione indossabile dell'app utilizza il metodo requestPermissions() per attivare la finestra di dialogo delle autorizzazioni di sistema.

L'app Telefono indirizza l'utente al dispositivo indossabile per concedere l'autorizzazione.
Figura 3. Indirizza l'utente al dispositivo indossabile per concedere l'autorizzazione.

L'app Telefono richiede più autorizzazioni contemporaneamente

Figura 4. Una finestra di dialogo delle autorizzazioni che utilizza un profilo del dispositivo associato per richiedere più autorizzazioni in una singola richiesta.

Le app partner su Android 12 (livello API 31) e versioni successive possono utilizzare i profili dei dispositivi associati per la connessione a uno smartwatch. L'utilizzo di un profilo semplifica il processo di registrazione raggruppando in un unico passaggio la concessione di un insieme di autorizzazioni specifico per il tipo di dispositivo.

Le autorizzazioni in bundle vengono concesse all'app complementare dopo la connessione del dispositivo e durano solo finché il dispositivo è associato. L'eliminazione dell'app o la rimozione dell'associazione comporta la rimozione delle autorizzazioni. Per maggiori dettagli, consulta AssociationRequest.Builder.setDeviceProfile().

Pattern di richiesta di autorizzazione

Esistono diversi pattern per richiedere autorizzazioni agli utenti. In ordine di priorità, sono:

  • Chiedi nel contesto se l'autorizzazione è ovviamente necessaria per una funzionalità specifica, ma non per l'esecuzione dell'app nel suo complesso.

  • Fornisci informazioni contestuali quando il motivo per la richiesta dell'autorizzazione non è ovvio e l'autorizzazione non è necessaria per l'esecuzione dell'app nel suo insieme.

Questi pattern sono spiegati nelle sezioni seguenti.

Chiedi nel contesto

Richiedi le autorizzazioni quando all'utente è chiaro perché è necessaria l'autorizzazione per eseguire una determinata operazione. È più probabile che gli utenti concedano un'autorizzazione quando comprendono la connessione alla funzionalità che vogliono utilizzare.

Ad esempio, un'app potrebbe richiedere che la posizione dell'utente mostri i luoghi di interesse nelle vicinanze. Quando l'utente tocca per cercare luoghi nelle vicinanze, l'app può richiedere immediatamente l'autorizzazione di accesso alla posizione perché esiste una chiara relazione tra la ricerca di luoghi nelle vicinanze e la necessità dell'autorizzazione di accesso alla posizione. A causa dell'evidenza di questa relazione, l'app non deve mostrare ulteriori schermate didattiche.

L'app richiede l'autorizzazione quando è evidentemente necessario.
Figura 5. Chiedi l'autorizzazione nel contesto.

Spiega nel contesto

La figura 6 mostra un esempio di istruzione contestuale. L'app non richiede le autorizzazioni per avviare il timer, ma un segnale didattico incorporato mostra che parte dell'attività, il rilevamento della posizione, è bloccata. Quando l'utente tocca il segnale, viene visualizzata una schermata di richiesta di autorizzazione che consente all'utente di sbloccare il rilevamento della posizione.

Utilizza il metodo shouldShowRequestPermissionRationale() per aiutare la tua app a decidere se fornire ulteriori informazioni. Per maggiori dettagli, consulta Richiedere autorizzazioni app. In alternativa, puoi esaminare in che modo l'applicazione di esempio dello speaker su GitHub gestisce la visualizzazione delle informazioni.

Quando è necessaria l'autorizzazione, l'app spiega perché è necessaria.
Figura 6. Fornisci informazioni contestualizzate.

Gestire il rifiuto

Se l'utente nega un'autorizzazione richiesta che non è critica per un'attività prevista, non impedirgli di continuare l'attività. Se alcune parti dell'attività sono disattivate a causa dell'autorizzazione negata, fornisci feedback visivo e fruibile.

La figura 7 mostra l'utilizzo di un'icona lucchetto per indicare che una funzionalità è bloccata perché l'utente non ha concesso l'autorizzazione a utilizzarla.

Quando l'utente nega l'autorizzazione, accanto alla funzionalità associata viene mostrata un'icona lucchetto.
Figura 7. Icona lucchetto che mostra che una funzionalità è bloccata a causa di autorizzazione negata.

Quando viene mostrata una seconda volta una finestra di dialogo di autorizzazione indossabile precedentemente negata, è presente l'opzione Rifiuta, non mostrare più. Se l'utente sceglie questa opzione, l'unico modo che potrà concedere in futuro è accedere all'app Impostazioni del dispositivo indossabile.

Il sistema si offre di interrompere la richiesta di autorizzazione.
Figura 8. L'utente può accedere a una richiesta di autorizzazione che in precedenza è stata rifiutata due volte tramite Impostazioni.

Scopri di più su come gestire il rifiuto delle autorizzazioni.

Autorizzazioni per i servizi

Solo un'attività può chiamare il metodo requestPermissions(). Di conseguenza, se l'utente interagisce con la tua app utilizzando un servizio, ad esempio tramite un quadrante, il servizio deve aprire un'attività prima di richiedere l'autorizzazione. In questa attività, fornisci ulteriori informazioni sul motivo per cui è necessaria l'autorizzazione.

In generale, non richiedere le autorizzazioni per un quadrante. Implementa invece una complicazione e consenti all'utente di scegliere quali dati visualizzare tramite la complicazione.

Impostazioni

L'utente può modificare in qualsiasi momento le autorizzazioni di un'app Wear nelle Impostazioni. Quando l'utente prova a eseguire un'operazione che richiede un'autorizzazione, chiama prima il metodo checkSelfPermission() per verificare se l'app è autorizzata a eseguire l'operazione.

Esegui questo controllo anche se l'utente l'ha concessa in precedenza, in quanto potrebbe averla revocata in seguito.

L'utente può modificare le autorizzazioni tramite l'app Impostazioni.
Figura 9. L'utente può modificare le autorizzazioni utilizzando l'app Impostazioni.