Ghi nhớ người dùng

Mọi người đều thích khi bạn nhớ tên họ. Một trong những cách đơn giản và hiệu quả nhất mà bạn có thể làm để khiến ứng dụng của mình trở nên đáng yêu hơn là ghi nhớ người dùng của bạn là ai, đặc biệt là khi người dùng nâng cấp lên thiết bị mới hoặc bắt đầu mang theo máy tính bảng cũng như điện thoại. Nhưng làm cách nào để biết người dùng của bạn là ai? Và làm cách nào để nhận ra chúng trên thiết bị mới?

Đối với nhiều ứng dụng, câu trả lời là các API AccountManager. Nếu được người dùng cho phép, bạn có thể sử dụng Trình quản lý tài khoản để tìm nạp tên tài khoản mà người dùng đã lưu trữ trên thiết bị của họ.

Việc tích hợp với các tài khoản của người dùng cho phép bạn làm nhiều việc, chẳng hạn như:

  • Tự động điền biểu mẫu bằng địa chỉ email của người dùng.
  • Truy xuất mã nhận dạng được liên kết với người dùng chứ không phải thiết bị.

Xác định xem AccountManager có phù hợp với bạn hay không

Các ứng dụng thường cố gắng ghi nhớ người dùng bằng một trong ba kỹ thuật sau:

  1. Yêu cầu người dùng nhập tên người dùng.
  2. Truy xuất mã thiết bị duy nhất để ghi nhớ thiết bị.
  3. Truy xuất tài khoản tích hợp từ AccountManager.

Lựa chọn (1) có vấn đề. Thứ nhất, việc yêu cầu người dùng nhập nội dung nào đó trước khi sử dụng ứng dụng sẽ tự động làm cho ứng dụng trở nên kém hấp dẫn hơn. Thứ hai, không có gì đảm bảo rằng tên người dùng mà họ chọn là duy nhất.

Tuỳ chọn (2) ít phức tạp hơn đối với người dùng nhưng khó thực hiện đúng. Quan trọng hơn, API này chỉ cho phép bạn ghi nhớ người dùng trên một thiết bị. Hãy tưởng tượng bạn sẽ cảm thấy thất vọng khi nâng cấp lên một thiết bị mới toanh, nhưng nhận thấy rằng ứng dụng của bạn không còn ghi nhớ thông tin đó nữa.

Phương án (3) là kỹ thuật nên dùng. Trình quản lý tài khoản cho phép bạn nhận thông tin về các tài khoản được lưu trữ trên thiết bị của người dùng. Bằng cách sử dụng Trình quản lý tài khoản, bạn chỉ cần thêm vài lần nhấn vào giao diện người dùng là có thể ghi nhớ người dùng, bất kể người dùng đó có bao nhiêu thiết bị.

Quyết định loại tài khoản cần sử dụng

Các thiết bị Android có thể lưu trữ nhiều tài khoản từ nhiều nhà cung cấp. Khi truy vấn AccountManager để biết tên tài khoản, bạn có thể chọn lọc theo loại tài khoản. Loại tài khoản là một chuỗi xác định duy nhất thực thể đã phát hành tài khoản. Ví dụ: Tài khoản Google có loại com.google, còn Twitter dùng com.twitter.android.auth.login.

Yêu cầu quyền GET_ACCOUNTS

Để có được danh sách các tài khoản trên thiết bị, ứng dụng của bạn cần có quyền GET_ACCOUNTS. Thêm thẻ <uses-permission> vào tệp kê khai để yêu cầu quyền này:

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

Thông báo cho người dùng và nhận sự đồng ý

Bạn có thể xem danh sách tài khoản người dùng bằng cách gọi getAccounts() hoặc getAccountsByType(). Tuy nhiên, hãy lưu ý rằng API này trả về dữ liệu cá nhân và nhạy cảm của người dùng. Bất cứ khi nào ứng dụng truy cập, thu thập, sử dụng hoặc chia sẻ dữ liệu riêng tư và nhạy cảm, bạn đều phải công bố rõ ràng dữ liệu đó cho người dùng. Đối với ứng dụng phát hành trên Google Play, chính sách bảo vệ dữ liệu người dùng yêu cầu bạn phải thực hiện những việc sau:

  1. Thông báo cho người dùng về cách ứng dụng của bạn truy cập, thu thập, sử dụng hoặc chia sẻ dữ liệu cá nhân và dữ liệu nhạy cảm. Tìm hiểu thêm về thông tin công bố được chấp nhận và sự đồng ý.
  2. Cung cấp chính sách quyền riêng tư mô tả cách bạn sử dụng dữ liệu này cả trên và ngoài thiết bị.

Để tìm hiểu thêm, hãy truy cập Chính sách của Google Play về dữ liệu người dùng.

Truy vấn AccountManager để biết danh sách tài khoản

Sau khi quyết định loại tài khoản mà bạn quan tâm, bạn cần truy vấn các tài khoản thuộc loại đó. Tạo một thực thể của AccountManager bằng cách gọi AccountManager.get(). Sau đó, hãy sử dụng thực thể đó để gọi 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");

Thao tác này sẽ trả về một mảng các đối tượng Account. Nếu có nhiều Account trong mảng, hãy hiển thị hộp thoại yêu cầu người dùng chọn một hộp thoại.

Sử dụng đối tượng tài khoản để cá nhân hoá ứng dụng

Đối tượng Account chứa tên tài khoản. Đối với Tài khoản Google, tên này là địa chỉ email. Bạn có thể sử dụng thông tin này theo một số cách, bao gồm:

  • Dưới dạng các đề xuất trong biểu mẫu, vì vậy, người dùng không cần tự nhập thông tin tài khoản.
  • Làm khoá cho cơ sở dữ liệu trực tuyến của riêng bạn về việc sử dụng và thông tin cá nhân hoá.

Quyết định xem tên tài khoản có đủ không

Tên tài khoản là một cách hay để ghi nhớ người dùng, nhưng bản thân đối tượng Account không bảo vệ dữ liệu của bạn hoặc cho phép bạn truy cập vào bất kỳ nội dung nào ngoài tên tài khoản của người dùng. Nếu ứng dụng của bạn cần cho phép người dùng truy cập trực tuyến để truy cập vào dữ liệu cá nhân, bạn cần một biện pháp mạnh mẽ hơn: xác thực. Tìm hiểu cách xác thực các dịch vụ trực tuyến hiện cócách viết trình xác thực tuỳ chỉnh để bạn có thể cài đặt các loại tài khoản của riêng mình.