Ricorda il tuo utente

A tutti piace quando ricordi il proprio nome. Una delle cose più semplici ed efficaci che puoi fare per rendere la tua app più amabile è ricordare chi è l'utente, in particolare quando questo passa a un nuovo dispositivo o inizia a portare con te un tablet e uno smartphone. Ma come fai a sapere chi è il tuo utente? E come fate a riconoscerli su un nuovo dispositivo?

Per molte applicazioni, la risposta sono le API AccountManager. Con l'autorizzazione dell'utente, puoi utilizzare l'account manager per recuperare i nomi degli account che l'utente ha memorizzato sul suo dispositivo.

L'integrazione con gli account utente ti consente di svolgere varie attività, tra cui:

  • Compila automaticamente i moduli con l'indirizzo email dell'utente.
  • Recupera un ID associato a un utente, non a un dispositivo.

Stabilisci se AccountManager fa al caso tuo

Le applicazioni in genere provano a ricordare l'utente utilizzando una delle tre tecniche:

  1. Chiedi all'utente di inserire un nome utente.
  2. Recupera un ID dispositivo univoco per ricordare il dispositivo.
  3. Recupera un account integrato da AccountManager.

L'opzione (1) è problematica. Primo: chiedere all'utente di inserire qualcosa prima di usare l'app, la rende automaticamente meno accattivante. In secondo luogo, non c'è alcuna garanzia che il nome utente che scelgono sia univoco.

L'opzione (2) è meno onerosa per l'utente, ma è difficile da capire. Ancora più importante, permette di ricordare l'utente solo su un dispositivo. Immagina la frustrazione di qualcuno che passa a un dispositivo nuovo di zecca e poi scopre che la tua app non lo ricorda più.

L'opzione (3) è la tecnica preferita. L'account manager ti consente di ottenere informazioni sugli account memorizzati sul dispositivo dell'utente. La gestione dell'account ti permette di ricordare l'utente, a prescindere dal numero di dispositivi che possiede, aggiungendo solo un paio di tocchi in più all'interfaccia utente.

Decidi quale tipo di account utilizzare

I dispositivi Android possono memorizzare più account di molti fornitori diversi. Quando esegui una query su AccountManager per i nomi degli account, puoi scegliere di filtrare in base al tipo di account. Il tipo di account è una stringa che identifica in modo univoco l'entità che ha emesso l'account. Ad esempio, gli Account Google hanno il tipo com.google, mentre Twitter usa com.twitter.android.auth.login.

Richiedi l'autorizzazione GET_ACCOUNTS

Per ottenere un elenco di account sul dispositivo, la tua app deve avere l'autorizzazione GET_ACCOUNTS. Aggiungi un tag <uses-permission> nel file manifest per richiedere questa autorizzazione:

<manifest ... >
    <uses-permission android:name="android.permission.GET_ACCOUNTS" />
    ...
</manifest>

Informare gli utenti e ottenere il consenso

Puoi ottenere l'elenco degli account utente chiamando getAccounts() o getAccountsByType(). Tuttavia, tieni presente che l'API restituisce dati utente personali e sensibili e ogni volta che l'app accede, raccoglie, utilizza o condivide dati personali e sensibili, devi comunicarlo chiaramente agli utenti. Per le app pubblicate su Google Play, le norme che proteggono i dati utente richiedono quanto segue:

  1. Comunicare all'utente in che modo la tua app accede ai dati personali e sensibili e li raccoglie, utilizza o condivide. Scopri di più sull'informativa e sul consenso accettabili.
  2. Fornisci norme sulla privacy che descrivono il tuo utilizzo di questi dati sul dispositivo e non.

Per scoprire di più, consulta le Norme di Google Play relative ai dati utente.

Query AccountManager per un elenco di account

Dopo aver deciso il tipo di account che ti interessa, devi eseguire una query per gli account di quel tipo. Ottieni un'istanza di AccountManager chiamando AccountManager.get(). Quindi utilizza questa istanza per chiamare getAccountsByType().

Kotlin

val am: AccountManager = AccountManager.get(this) // "this" references the current Context

val accounts: Array<out Account> = am.getAccountsByType("com.google")

Java

AccountManager am = AccountManager.get(this); // "this" references the current Context

Account[] accounts = am.getAccountsByType("com.google");

Questo restituisce un array di oggetti Account. Se l'array contiene più di un Account, presenta una finestra di dialogo in cui chiedi all'utente di selezionarne uno.

Utilizzare l'oggetto account per personalizzare l'app

L'oggetto Account contiene un nome account, che per gli Account Google è un indirizzo email. Puoi utilizzare queste informazioni in diversi modi, tra cui:

  • Come suggerimenti nei moduli, in modo che l'utente non debba inserire autonomamente i dati dell'account.
  • Da utilizzare nel tuo database online di informazioni su utilizzo e personalizzazione.

Decidi se un nome account è sufficiente

Il nome dell'account è utile per ricordare l'utente, ma l'oggetto Account di per sé non protegge i tuoi dati, né ti dà accesso a elementi diversi dal nome dell'account dell'utente. Se la tua app deve consentire all'utente di accedere a Internet per accedere ai dati privati, hai bisogno di una soluzione più efficace: l'autenticazione. Scopri come eseguire l'autenticazione ai servizi online esistenti e come scrivere un autenticatore personalizzato per installare i tuoi tipi di account.