Android đang tập trung hỗ trợ người dùng tận dụng các 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.
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 đó.
- Hãy 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.
- Hãy yêu cầu quyền này khi cần chứ không phải khi khởi động ứng dụng, sao cho người dùng nắm rõ quyền cần cung cấp.
- 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 được đề 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ể nào đó.
Hãy 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ô.
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 tra ứng dụng của mình trên Android 11, 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 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 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 sử dụng thông tin này để đem lại cho họ những lợi ích cụ thể. 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 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 sử dụng trình quản lý thiết bị đồng hành, vốn 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 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 sử dụng quyền truy cập thông tin vị trí ở chế độ nền.
- Hãy thiết kế sao cho ứng dụng chỉ xuống cấp nhẹ khi không có quyền truy cập thông tin vị trí mọi lúc. Trên Android 10 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.
- 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 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 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.
- Bạn phải lưu giữ các tệp chứa dữ liệu nhạy cảm tại thư mục riêng tư của ứng dụng thuộc bộ nhớ trong.
- Trên Android 10, đối với các tệp chỉ liên quan đến ứng dụng của bạn, hãy lưu trữ các tệp đó tại 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, tốt nhất là 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. Hãy lưu ý rằng Android 9 trở lên không cho phép truy cập vào micrô hoặc máy ảnh khi ứng dụng của bạn đang chạy trong nền.
- 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. Hãy 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.
- Đừ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.
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 giá trị nhận dạng đặt lại được. Hãy 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 và 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 (cấp độ API 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.