Mémoriser l'utilisateur

Tout le monde aime quand on se souvient de son nom. L'une des choses les plus simples et les plus efficaces que vous puissiez faire pour rendre votre application plus agréable consiste à vous souvenir de qui est votre utilisateur, en particulier lorsqu'il passe à un nouvel appareil ou commence à transporter une tablette en plus d'un téléphone. Mais comment savoir qui est votre utilisateur ? Et comment les reconnaître sur un nouvel appareil ?

Pour de nombreuses applications, la réponse réside dans les API AccountManager. Avec l'autorisation de l'utilisateur, vous pouvez utiliser le gestionnaire de compte pour récupérer les noms des comptes que l'utilisateur a stockés sur son appareil.

L'intégration aux comptes utilisateur vous permet d'effectuer différentes actions, par exemple:

  • remplir automatiquement les formulaires avec l'adresse e-mail de l'utilisateur ;
  • Récupérez un ID lié à un utilisateur, et non à un appareil.

Déterminez si AccountManager est fait pour vous

Les applications tentent généralement de mémoriser l'utilisateur à l'aide de l'une des trois techniques suivantes:

  1. Demandez à l'utilisateur de saisir un nom d'utilisateur.
  2. Récupérez un ID d'appareil unique pour le mémoriser.
  3. Récupérez un compte intégré à partir de AccountManager.

L'option (1) pose problème. Tout d'abord, demander à l'utilisateur de saisir quelque chose avant d'utiliser votre application la rend automatiquement moins attrayante. Deuxièmement, rien ne garantit que le nom d'utilisateur choisi sera unique.

L'option (2) est moins coûteuse pour l'utilisateur, mais elle est difficile à utiliser. Plus important encore, cela ne vous permet de mémoriser l'utilisateur que sur un seul appareil. Imaginez la frustration d'une personne qui passe à un nouvel appareil et découvre alors que votre application ne s'en souvient plus.

Nous vous recommandons d'utiliser la technique (3). Le gestionnaire de compte vous permet d'obtenir des informations sur les comptes stockés sur l'appareil de l'utilisateur. Le gestionnaire de compte vous permet de vous souvenir d'un utilisateur, quel que soit le nombre d'appareils qu'il possède, en ajoutant simplement quelques gestes supplémentaires à votre UI.

Choisir le type de compte à utiliser

Les appareils Android peuvent stocker plusieurs comptes de nombreux fournisseurs différents. Lorsque vous interrogez AccountManager pour obtenir des noms de compte, vous pouvez choisir de filtrer par type de compte. Le type de compte est une chaîne qui identifie de manière unique l'entité qui a émis le compte. Par exemple, les comptes Google sont de type com.google, tandis que Twitter utilise com.twitter.android.auth.login.

Demander l'autorisation GET_ACCOUNTS

Pour obtenir la liste des comptes sur l'appareil, votre application a besoin de l'autorisation GET_ACCOUNTS. Ajoutez une balise <uses-permission> à votre fichier manifeste pour demander cette autorisation:

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

Informer les utilisateurs et obtenir leur consentement

Vous pouvez obtenir la liste des comptes utilisateur en appelant getAccounts() ou getAccountsByType(). Gardez toutefois à l'esprit que l'API renvoie des données utilisateur sensibles et à caractère personnel. Chaque fois que votre application accède à des données sensibles et à caractère personnel, les collecte, les utilise ou les partage, vous devez clairement en informer les utilisateurs. Pour les applications publiées sur Google Play, les règles protégeant les données utilisateur exigent que vous respectiez les règles suivantes:

  1. Indiquez à l'utilisateur comment votre application accède aux données sensibles et à caractère personnel, les collecte, les utilise ou les partage. En savoir plus sur la divulgation et le consentement acceptables
  2. Fournissez des règles de confidentialité décrivant votre utilisation de ces données sur et en dehors de l'appareil.

Pour en savoir plus, consultez le Règlement Google Play concernant les données utilisateur.

Interroger AccountManager pour une liste de comptes

Une fois que vous avez choisi le type de compte qui vous intéresse, vous devez rechercher des comptes de ce type. Obtenez une instance de AccountManager en appelant AccountManager.get(). Utilisez ensuite cette instance pour appeler 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");

Cette opération renvoie un tableau d'objets Account. Si le tableau comporte plusieurs Account, présentez une boîte de dialogue demandant à l'utilisateur d'en sélectionner un.

Utiliser l'objet de compte pour personnaliser votre application

L'objet Account contient un nom de compte. Pour les comptes Google, il s'agit d'une adresse e-mail. Vous pouvez utiliser ces informations de plusieurs manières, y compris:

  • Sous forme de suggestions dans les formulaires, de sorte que l'utilisateur n'ait pas besoin de saisir lui-même les informations de compte.
  • Il est essentiel pour votre propre base de données en ligne d'informations d'utilisation et de personnalisation.

Déterminer si un nom de compte est suffisant

Un nom de compte est un bon moyen de mémoriser l'utilisateur. Toutefois, l'objet Account en lui-même ne protège pas vos données et ne vous donne accès à aucun élément en dehors du nom de compte de l'utilisateur. Si votre application doit autoriser l'utilisateur à se connecter à Internet pour accéder à des données privées, vous avez besoin d'un moyen plus sûr: l'authentification. Découvrez comment vous authentifier auprès des services en ligne existants et écrire un authentificateur personnalisé pour installer vos propres types de comptes.