Đôi điều về Runtime permission trong Android sau nhiều scandal

0
Dịch vụ dạy kèm gia sư lập trình

Sau vụ scandal Cambridge Analytica mà Facebook là bên chịu nhiều chỉ trích nhất. Đến lúc này thì vấn đề quyền riêng tư và dữ liệu người dùng trở lên nóng hơn bao giờ hết. Bài viết này sẽ hướng dẫn các bạn để có thể yêu cầu cấp quyền cho ứng dụng (permission trong Android) với trải nghiệm tốt nhất và được người dùng tin tưởng.

Có rất nhiều người dùng đã cẩn thận gỡ bỏ hết các quyền trong ứng dụng đã cấp trước đó. Thậm chí là xóa luôn các ứng dụng mà họ không sử dụng đến.

Tuy nhiên, các nhà phát triển vẫn có cách khác để có được thông tin cá nhân của khách hàng. Như truy xuất được thông tin về vị trí, tin nhắn, danh bạ, liên hệ… truy cập vào các tệp tin, trạng thái WIFI, trạng thái điện thoại và rất nhiều thông tin khác.

Các vụ rò rỉ thông tin ngày càng tràn ngập trên các mặt báo. Người dùng do đó trở nên thận trọng hơn bao giờ hết. Nếu ứng dụng của bạn mà cần cấp quyền(runtime permisson) sẽ trở lên khó khăn hơn, người dùng sẽ thường nghi ngờ ứng dụng của bạn.

Tuy nhiên, nếu ứng dụng mà không được cấp quyền thì sẽ không thể hoạt động bình thường được.

Vậy phải làm sao để thuyết phục người dùng đây?

Làm sao để người dùng không cảm thấy bị lừa dối (mặc dù ứng dụng của bạn không hề có ý định lấy cắp thông tin)?

#1. Vấn đề yêu cầu cấp quyền (permission trong Android)

Với các phiên bản trước Android M thì sao?

Trước tiên, hãy xem cách các API đã hoạt động và làm việc như thế nào trên các phiên bản Android nhé

Trước Android Marshmallow, tất cả các quyền được yêu cầu trước khi ứng dụng được cài đặt. Người dùng hầu như không cách nào tắt các quyền mà ứng dụng đó đã được cấp.

runtime-permission-trong-android

Người dùng không được kiểm soát các quyền này. Họ chỉ có hai lựa chọn là chấp nhận và cài đặt hoặc nghỉ chơi và không cài đặt ứng dụng.

Và thế là nhiều công ty, nhà phát triển đã lợi dụng điều này. Họ tận dụng việc người dùng thiếu hiểu biết cũng như sự hạn chế của Android. Họ tha hồ thu thập dữ liệu của người dùng mà không ai hay biết.

runtime-permission-trong-android

Còn về phía nhà phát triển ứng dụng thì sao? Họ cũng không có cách nào có thể làm rõ với người dùng rằng tại sao họ lại cần những quyền đó.

Việc cấp quyền permission trong Android trước khi cài đặt có vài lợi thế cho nhà phát triển là effort. Bạn sẽ không phải xử lý thêm logic cho các trường hợp quyền không được cấp hoặc bị thu hồi sau đó. Đây cũng là lý do mà nhiều bạn chọn Target version <= 21( Android L) để đỡ phải code nhiều 🙂

Nhưng Google đã vào cuộc, từ Android M trở đi thì mọi chuyện đã khác. Khác như nào thì bạn đọc tiếp nhé

Từ Android M trở đi, permission trong Android sẽ giống với iOS

Từ Android M trở đi, các ứng dụng không thể yêu cầu tất cả các quyền cùng một lúc trước khi cài đặt. Điều này cho phép người dùng chấp nhận hoặc từ chối các quyền được yêu cầu trong khi tương tác với ứng dụng đang chạy.

Ngoài ra, người dùng có thể thu hồi hoặc cấp quyền theo yêu cầu của ứng dụng bất kỳ lúc nào.

runtime-permission-trong-android
Ứng dụng facebook yêu cầu cấp quyền ở Android M

Với cách tiếp cận này thì rõ ràng là permission trong Android trở lên minh bạch hơn rất nhiều. Người dùng biết được tại sao họ lại cần phải cấp quyền đó. Và tất nhiên, nếu muốn họ có thể thu hồi quyền đã cấp bất kì lúc nào.

Nếu bạn để ý thì cách tiếp cận này của Android đã có trên iOS từ rất lâu rồi. Apple đã làm quá tốt vấn đề nhạy cảm này phải không?

#2. Một số quy tắc để yêu cầu cấp quyền có trải nghiệm tốt

Bây giờ, hãy đi sâu vào một số cách hay nhất để yêu cầu quyền một cách hiệu quả. Theo cách mà người dùng hiểu ý định của bạn và không có vấn đề gì khi cấp cho bạn quyền truy cập thông tin trên thiết bị của họ.

1. Yêu cầu sự cho phép trong một bối cảnh mà người dùng có thể hiểu tại sao nó được yêu cầu.

Ví dụ như ứng dụng Dason bên dưới, họ rất tinh tế khi chỉ yêu cầu quyền lúc ứng dụng cần trong hoàn cảnh mà người dùng hiểu

runtime-permission-trong-android

Hay như trường hợp của Facebook, khi cố gắng tải lên một bức ảnh, nó sẽ yêu cầu quyền truy cập vào các tập tin trên thiết bị.

runtime-permission-trong-android

2. Không hiện quá nhiều hộp thoại yêu cầu cấp quyền cho người dùng

Vì sao ư? vì họ luôn có thể chọn hộp kiểm “Không bao giờ hỏi lại”.

Đến lúc đó thì permission trong Android sẽ trở lên khó khăn hơn. Vì họ sẽ phải Setting để cấp quyền chứ không thể cấp trực tiếp trên ứng dụng của bạn.

3. Chỉ yêu cầu các quyền cần thiết vào lúc cần thiết (không hơn không kém)

Đúng vậy, chỉ tính năng nào cần cấp quyền thì mới yêu cầu. Điều đó sẽ tạo tự tin tường của người dùng.

4. Luôn giải thích rõ ràng lý do tại sao lại cần cấp quyền đó

runtime-permission-trong-android

Nếu hoàn cảnh sử dụng ứng dụng lúc đó không đủ để làm rõ tại sao cần phải cấp quyền. Bạn nên hiển thị một message để giải thích tại sao nó là cần thiết trước yêu cầu quyền thực sự.

Điều này sẽ giảm nguy cơ mất người dùng tiềm năng vì họ nghi ngờ ứng dụng của bạn

5. Đảm bảo rằng ứng dụng vẫn hoạt động khi không phải tất cả các quyền cần thiết đều được cấp.

runtime-permission-trong-android

Nếu một quyền là không thể thiếu cho một tính năng, chúng ta cần phải thông báo cho người dùng biết về tình hình và để họ chọn nếu họ thực sự muốn sử dụng nó.

Trong trường hợp không được cấp quyền, ứng dụng cũng sẽ cần giải thích lý do tại sao nó không hoạt động.

#3. Cách yêu cầu permission trong Android

Với những quy tắc ở trên, mình tin các bạn cũng hiểu làm thế nào để tạo trải nghiệm và sự tin tưởng của người dùng với ứng dụng của bạn.

Bạn có thể code phần yêu cầu quyền theo như luồng bên dưới.

runtime-permission-trong-android

Có thể sử dụng API về runtime permission trong Android để code như hình trên.

Nếu bạn “lười” thì có thể sử dụng thư viện. Họ đã làm sẵn tất cả cho bạn, việc của bạn là gọi ra và sử dụng

Một số thư viện mà mình khuyến khích:

#4. Tổng kết

Chúng ta nên cẩn thận khi yêu cầu quyền với người dùng. Chúng ta nên cố gắng cung cấp trải nghiệm người dùng tốt nhất và thuyết phục người dùng rằng ứng dụng cần quyền được yêu cầu mà không làm phiền họ.

Hi vọng bài viết permission trong Android sẽ giúp cho bạn, các nhà phát triển ứng dụng có được trải nghiệm tốt nhất.

Nếu thấy hay thì đừng quên chia sẻ bài viết cho mọi người cùng đọc nhé

Dịch vụ phát triển ứng dụng mobile giá rẻ - chất lượng
Bài trướcContext trong Android là gì? Bạn đã hiểu đúng về nó chưa?
Bài tiếp theoThủ thuật tối ưu tốc độ RecyclerView lồng nhau
Tên đầy đủ là Dương Anh Sơn. Tốt nghiệp ĐH Bách Khoa Hà Nội. Mình bắt đầu nghiệp coder khi mà ra trường chẳng xin được việc đúng chuyên ngành. Mình tin rằng chỉ có chia sẻ kiến thức mới là cách học tập nhanh nhất. Các bạn góp ý bài viết của mình bằng cách comment bên dưới nhé !

Bình luận. Cùng nhau thảo luận nhé!

avatar
  Theo dõi bình luận  
Thông báo