Zapamiętaj użytkownika

Wszyscy lubimy, gdy pamiętasz ich imię i nazwisko. Jednym z najprostszych i najefektywniejszych sposobów na zwiększenie atrakcyjności dla aplikacji jest zapamiętanie, kim jest jej użytkownik – szczególnie wtedy, gdy przechodzi on na nowe urządzenie lub zaczyna nosić ze sobą tablet i telefon. Skąd jednak wiadomo, kto jest jej użytkownikiem? I jak rozpoznać je na nowym urządzeniu?

W przypadku wielu aplikacji odpowiedzią są interfejsy API AccountManager. Za zgodą użytkownika możesz użyć Menedżera konta do pobrania nazw kont zapisanych przez użytkownika na jego urządzeniu.

Integracja z kontami użytkowników umożliwia wykonywanie różnych czynności, takich jak:

  • Automatycznie uzupełniaj formularze adresem e-mail użytkownika.
  • Pobierz identyfikator powiązany z użytkownikiem, a nie z urządzeniem.

Sprawdź, czy AccountManager jest dla Ciebie odpowiedni

Aplikacje zwykle próbują zapamiętać użytkownika, korzystając z jednej z 3 metod:

  1. Poproś użytkownika o wpisanie nazwy użytkownika.
  2. Pobierz unikalny identyfikator urządzenia, aby je zapamiętać.
  3. Pobierz wbudowane konto z AccountManager.

Opcja 1 jest problematyczna. Po pierwsze poproszenie użytkownika o wpisanie czegoś przed skorzystaniem z aplikacji automatycznie zmniejsza jej atrakcyjność. Po drugie, nie ma gwarancji, że wybrana nazwa użytkownika jest unikalna.

Opcja (2) jest mniej uciążliwa dla użytkownika, ale trudna do wykonania. Co więcej, pozwala to zapamiętać użytkownika tylko na jednym urządzeniu. Wyobraź sobie frustrację u osoby, która uaktualnia urządzenie do nowiutkiego urządzenia, a potem okazało się, że aplikacja już jej nie pamięta.

Preferowaną metodą jest opcja (3). Menedżer konta zapewnia dostęp do informacji o kontach zapisanych na urządzeniu użytkownika. Menedżer konta pozwala zapamiętać użytkownika bez względu na to, ile ma urządzeń. Wystarczy kilka dodatkowych kliknięć.

Wybór rodzaju konta, którego chcesz użyć

Na urządzeniu z Androidem można przechowywać wiele kont od wielu różnych dostawców. Gdy przesyłasz zapytanie AccountManager o nazwy kont, możesz filtrować według typu konta. Typ konta to ciąg znaków, który jednoznacznie identyfikuje podmiot, który je wystawił. Na przykład konta Google mają typ com.google, a Twitter – com.twitter.android.auth.login.

Poproś o uprawnienie GET_ACCOUNTS

Aby wyświetlić listę kont na urządzeniu, aplikacja musi mieć uprawnienie GET_ACCOUNTS. Dodaj do pliku manifestu tag <uses-permission>, aby poprosić o te uprawnienia:

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

Informuj użytkowników i uzyskuj ich zgodę

Listę kont użytkowników możesz wyświetlić, wywołując metodę getAccounts() lub getAccountsByType(). Pamiętaj jednak, że interfejs API zwraca dane osobowe i poufne użytkownika, a za każdym razem, gdy aplikacja uzyskuje dostęp do danych osobowych lub poufnych, musi je gromadzić, wykorzystywać lub udostępniać. W przypadku aplikacji opublikowanych w Google Play zasady chroniące dane użytkowników wymagają wykonania tych czynności:

  1. Wyjaśnić użytkownikowi, w jaki sposób aplikacja uzyskuje dostęp do danych osobowych i poufnych oraz jak je zbiera, wykorzystuje lub udostępnia. Dowiedz się więcej o dozwolonych informacjach i zgodzie użytkowników.
  2. Udostępnij politykę prywatności opisującą, w jaki sposób korzystasz z tych danych na urządzeniu i poza nim.

Więcej informacji znajdziesz w zasadach Google Play dotyczących danych użytkownika.

Aby uzyskać listę kont, wyślij zapytanie do menedżera konta

Gdy wybierzesz rodzaj konta, który Cię interesuje, musisz przesłać zapytania o konta tego typu. Aby uzyskać instancję AccountManager, wywołaj metodę AccountManager.get(). Następnie użyj tej instancji do wywołania funkcji 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");

Zwraca tablicę obiektów Account. Jeśli tablica zawiera więcej niż 1 Account, pojawi się okno z prośbą o wybranie jednego z elementów.

Używanie obiektu account do personalizowania aplikacji

Obiekt Account zawiera nazwę konta, która w przypadku kont Google jest adresem e-mail. Możesz wykorzystać te informacje na kilka sposobów, w tym:

  • jako sugestie w formularzach, dzięki czemu użytkownik nie musi samodzielnie wpisywać informacji o koncie.
  • jako klucz do Twojej własnej bazy danych online z informacjami o użytkowaniu i personalizacji.

Jak sprawdzić, czy nazwa konta jest wystarczająca

Nazwa konta to dobry sposób na zapamiętanie nazwy użytkownika, ale sam obiekt Account nie chroni Twoich danych ani nie zapewnia dostępu do niczego poza nazwą konta użytkownika. Jeśli Twoja aplikacja musi umożliwić użytkownikowi połączenie z internetem w celu uzyskania dostępu do prywatnych danych, potrzebujesz czegoś silniejszego: uwierzytelniania. Dowiedz się, jak uwierzytelniać się w istniejących usługach online i jak utworzyć niestandardowy mechanizm uwierzytelniający, aby móc zainstalować własne rodzaje kont.