Android tập trung hỗ trợ người dùng tận dụng các điểm cải tiến mới nhất, trong khi vẫn đảm bảo rằng quyền riêng tư và vấn đề bảo mật của người dùng luôn là ưu tiên hàng đầu.
Một số phương pháp hay nhất được mô tả trên trang này cũng xuất hiện trong bản tóm tắt.
Chú ý đến các quyền
Tạo dựng lòng tin nơi người dùng bằng cách luôn minh bạch và cung cấp cho họ quyền kiểm soát
cách họ trải nghiệm ứng dụng của bạn.
Yêu cầu các quyền cần thiết tối thiểu cho tính năng của bạn. Bất cứ khi nào bạn đưa ra các thay đổi lớn cho ứng dụng, hãy xem xét các quyền được yêu cầu để xác nhận rằng các tính năng trong ứng dụng của bạn vẫn cần những quyền đó.
- Lưu ý rằng các phiên bản Android mới thường đưa ra các phương thức truy cập dữ liệu theo cách chú trọng đến quyền riêng tư mà không yêu cầu quyền. Để biết thêm thông tin, hãy xem phần Đánh giá xem ứng dụng của bạn có cần khai báo quyền hay không.
- Nếu bạn phân phối ứng dụng trên Google Play, Android vitals sẽ cho bạn biết tỷ lệ người dùng từ chối cấp quyền trong ứng dụng của bạn. Hãy dùng dữ liệu này để đánh giá lại cách thiết kế các tính năng mà những quyền được yêu cầu thường bị từ chối nhiều nhất.
Làm theo quy trình đề xuất để giải thích lý do một tính năng trong ứng dụng của bạn cần có một quyền cụ thể. Hãy yêu cầu quyền khi cần thiết chứ không phải khi khởi động để người dùng hiểu rõ lý do họ cần cấp quyền.
Lưu ý rằng người dùng hoặc hệ thống có thể từ chối cấp quyền nhiều lần. Android tôn trọng lựa chọn này của người dùng bằng cách bỏ qua các yêu cầu cấp quyền của cùng một ứng dụng.
Hãy xuống cấp nhẹ khi người dùng từ chối hoặc thu hồi quyền. Ví dụ: bạn có thể tắt tính năng nhập bằng giọng nói của ứng dụng nếu người dùng không cấp quyền sử dụng micrô.
Khi bạn cập nhật ứng dụng, hãy xoá quyền truy cập của ứng dụng vào bất kỳ quyền khi bắt đầu chạy nào mà ứng dụng của bạn không cần nữa.
Nếu bạn đang dùng một SDK hoặc thư viện để truy cập vào dữ liệu được bảo vệ bằng các quyền có thể gây nguy hiểm, thì người dùng thường sẽ quy kết trách nhiệm cho ứng dụng của bạn. Hãy đảm bảo rằng bạn hiểu các quyền mà SDK của bạn yêu cầu và lý do SDK yêu cầu các quyền đó.
- Nếu bạn kiểm thử ứng dụng của mình trên Android 11 (API cấp 30), hãy dùng tính năng kiểm tra quyền truy cập dữ liệu để tìm hiểu xem dữ liệu riêng tư có thể được truy cập ở những vị trí nào trong mã của bạn và trong mã thư viện bên thứ 3.
Giảm thiểu việc sử dụng vị trí
Nếu ứng dụng của bạn có thể hỗ trợ các trường hợp sử dụng mà không cần dữ liệu vị trí, thì đừng yêu cầu quyền truy cập thông tin vị trí. Nếu ứng dụng của bạn yêu cầu quyền truy cập vị trí, hãy hỗ trợ người dùng đưa ra quyết định đúng đắn hơn.
- Nếu ứng dụng của bạn cần thu thập thông tin vị trí, hãy giải thích cho người dùng về cách ứng dụng dùng thông tin này để mang lại cho họ những lợi ích cụ thể.
- Nếu ứng dụng của bạn cần ghép nối thiết bị của người dùng với một thiết bị ở gần qua Bluetooth hoặc Wi-Fi, hãy dùng trình quản lý thiết bị đồng hành, công cụ này không cần quyền truy cập thông tin vị trí.
- Hãy xem xét mức độ chi tiết về vị trí mà ứng dụng của bạn cần. Phần lớn trường hợp sử dụng liên quan đến vị trí chỉ cần truy cập vị trí tương đối là đủ.
- Hãy truy cập vào dữ liệu vị trí khi người dùng có thể nhìn thấy ứng dụng của bạn. Khi đó, người dùng có thể hiểu rõ hơn lý do ứng dụng của bạn yêu cầu thông tin vị trí.
- Nếu ứng dụng của bạn yêu cầu quyền truy cập thông tin vị trí ở chế độ nền (chẳng hạn như khi triển khai tính năng khoanh vùng địa lý), hãy đảm bảo rằng tính năng đó là tối quan trọng đối với chức năng cốt lõi của ứng dụng, đồng thời phải triển khai sao cho người dùng nắm được một cách rõ ràng. Tìm hiểu thêm về các điểm cần lưu ý khi dùng quyền truy cập thông tin vị trí ở chế độ nền.
- Trên Android 10 (API cấp 29) trở lên, người dùng có thể chỉ cho phép ứng dụng truy cập thông tin vị trí khi ứng dụng đang chạy. Hãy thiết kế sao cho khả năng hoạt động của ứng dụng chỉ bị giảm sút không đáng kể khi không có quyền truy cập vị trí mọi lúc.
- Nếu ứng dụng của bạn cần tiếp tục truy cập thông tin vị trí để hoàn thành công việc mà người dùng đặt ra sau khi họ rời khỏi giao diện người dùng của ứng dụng, hãy bắt đầu dịch vụ trên nền trước trước khi ứng dụng chuyển sang chạy trong nền. Bạn có thể làm việc này bằng một trong các phương thức gọi lại trong vòng đời của Android, chẳng hạn như
onPause()
. - Đừng bắt đầu chạy dịch vụ trên nền trước từ trong nền. Thay vào đó, hãy cân nhắc chạy ứng dụng từ thông báo rồi thực thi mã vị trí khi giao diện người dùng của ứng dụng xuất hiện.
Xử lý dữ liệu một cách an toàn
Lưu ý: Bạn có thể đọc thêm về những dữ liệu được xem là nhạy cảm trên trang bài viết về Dữ liệu người dùng trong Trung tâm chính sách dành cho nhà phát triển trên Google Play.
Hãy xử lý dữ liệu nhạy cảm một cách minh bạch và an toàn.
- Cho người dùng biết thời điểm và lý do ứng dụng của bạn thu thập, sử dụng hoặc chia sẻ dữ liệu nhạy cảm.
- Dùng mô hình bộ nhớ có giới hạn, nếu có thể. Tìm hiểu cách di chuyển sang bộ nhớ có giới hạn tuỳ theo các trường hợp sử dụng ứng dụng của bạn.
- Luôn sử dụng kết nối mạng an toàn. Đối với dữ liệu tĩnh của ứng dụng, hãy dùng tính năng mã hoá thông tin xác thực tích hợp sẵn của Android. Đối với dữ liệu đang truyền, bạn nên dùng TLS (giao thức kế thừa của SSL) cho toàn bộ quá trình truyền dữ liệu, bất kể mức độ nhạy cảm như thế nào.
- Đặt các tệp chứa dữ liệu nhạy cảm vào thư mục riêng tư của ứng dụng thuộc bộ nhớ trong.
- Trên Android 10 (API cấp 29), hãy lưu trữ các tệp chỉ liên quan đến ứng dụng của bạn trong thư mục riêng của ứng dụng trong bộ nhớ ngoài. Tìm hiểu thêm về bộ nhớ có giới hạn.
- Nếu bạn cần truyền dữ liệu nhạy cảm sang một ứng dụng khác, hãy dùng một ý định tường minh. Cấp quyền truy cập dùng một lần vào dữ liệu để hạn chế hơn nữa quyền truy cập của ứng dụng khác.
- Ngay cả khi ứng dụng của bạn đang chạy trên nền trước, bạn vẫn nên cho hiển thị một chỉ báo theo thời gian thực để cho người dùng biết bạn đang ghi âm/ghi hình từ micrô hoặc máy ảnh. Xin lưu ý rằng Android 9 (API cấp 28) trở lên không cho phép quyền truy cập micrô hoặc camera khi ứng dụng của bạn chạy trong nền.
- Đừng đưa dữ liệu nhạy cảm vào tin nhắn logcat hoặc tệp nhật ký của ứng dụng. Tìm hiểu thêm về cách xử lý dữ liệu người dùng.
Jetpack cung cấp một vài thư viện để đảm bảo an toàn cho dữ liệu của ứng dụng. Tìm hiểu thêm về hướng dẫn sử dụng thư viện Bảo mật Jetpack và thư viện Các lựa chọn ưu tiên của Jetpack.
Sử dụng giá trị nhận dạng đặt lại được
Tôn trọng quyền riêng tư của người dùng và sử dụng mã nhận dạng đặt lại được. Tham khảo bài viết Các phương pháp hay nhất cho giá trị nhận dạng duy nhất để biết thêm thông tin.
- Đừng truy cập vào số IMEI hoặc số sê-ri của thiết bị vì đó là những giá trị nhận dạng vĩnh viễn. Nếu bạn tìm cách truy cập vào những giá trị nhận dạng này trong một ứng dụng nhắm vào Android 10 (API cấp 29) trở lên, lỗi
SecurityException
sẽ xảy ra. - Chỉ sử dụng mã nhận dạng cho quảng cáo đối với các trường hợp sử dụng là quảng cáo hoặc lập hồ sơ người dùng. Đối với các ứng dụng trong Google Play, đây là yêu cầu bắt buộc. Luôn tôn trọng các lựa chọn ưu tiên của người dùng về hoạt động theo dõi để cá nhân hoá quảng cáo.
- Đối với phần lớn các trường hợp sử dụng không liên quan đến quảng cáo, hãy dùng mã nhận dạng duy nhất trên toàn cầu (GUID) (được lưu trữ trong thư mục riêng tư), vốn bị giới hạn theo ứng dụng.
- Sử dụng Mã Android cài đặt bảo mật (SSAID) để chia sẻ trạng thái giữa các ứng dụng của bạn mà không cần yêu cầu người dùng đăng nhập vào tài khoản. Tìm hiểu thêm về cách theo dõi các lựa chọn ưu tiên của người dùng đã đăng xuất trên các ứng dụng.