Quyền truy cập và Quyền riêng tư trong phát triển ứng dụng di động: Khái niệm, cơ chế và cách cấu hình

Tác giả: IT Sectr Đã đăng: 2026-05-17 Thời gian đọc: 11 phút

Quyền truy cập và Quyền riêng tư — một trong những lĩnh vực quan trọng nhất và thay đổi nhanh nhất trong phát triển ứng dụng di động. Theo Apple Developer Guidelines (2025), kể từ khi ATT (App Tracking Transparency) được giới thiệu vào năm 2021, tỷ lệ người dùng đồng ý theo dõi là khoảng 20%. Chúng ta sẽ phân tích các mô hình quyền trên iOS và Android, yêu cầu về quyền riêng tư (ATT, Privacy Manifest, GDPR) và các mẹo thực tế để triển khai.

Những điểm chính

  • Runtime Permission — yêu cầu quyền trong khi ứng dụng chạy (Android 6.0+, iOS 8.0+). Người dùng có thể từ chối hoặc cấp quyền truy cập.
  • Android: Normal Permission (tự động), Dangerous Permission (yêu cầu runtime). Permission Group nhóm các quyền liên quan.
  • iOS: ATT (App Tracking Transparency) — yêu cầu theo dõi IDFA. Privacy Manifest — mô tả loại dữ liệu được thu thập. Info.plist Usage Description — mô tả mục đích sử dụng từng quyền.
  • GDPR (Quy định bảo vệ dữ liệu chung) — quy định bảo vệ dữ liệu của châu Âu. Yêu cầu sự đồng ý rõ ràng của người dùng để thu thập dữ liệu cá nhân.
  • IDFA (iOS) và GAID/AAID (Android) — mã định danh quảng cáo được sử dụng để nhắm mục tiêu và quy kết. Cần ATT để truy cập IDFA.

Mô hình quyền trên iOS và Android

Mô hình quyền trên iOS và Android có chung một ý tưởng: người dùng phải đồng ý truy cập vào dữ liệu nhạy cảm (máy ảnh, micrô, vị trí địa lý, danh bạ). Tuy nhiên, cách triển khai khác nhau đáng kể. Android yêu cầu quyền tại thời điểm sử dụng (runtime), iOS yêu cầu mô tả mục đích trong Info.plist và yêu cầu khi truy cập lần đầu. Triển khai đúng quyền truy cập trong ứng dụng di động là nền tảng của bảo mật và tin cậy.

Trước Android 6.0 (API 23), tất cả quyền được yêu cầu khi cài đặt — người dùng chấp nhận tất cả hoặc không cài đặt ứng dụng. Với Android 6.0, Runtime Permissions ra đời: ứng dụng yêu cầu quyền tại thời điểm cần đầu tiên và người dùng có thể từ chối. iOS sử dụng cách tiếp cận tương tự từ iOS 8.0. Hiểu được sự phát triển của quyền truy cập trong phát triển ứng dụng di động giúp thiết kế UX trực quan.

Tại IT Sectr, chúng tôi tuân theo nguyên tắc «quyền tối thiểu»: chỉ yêu cầu những gì thực sự cần thiết và chỉ khi cần. Điều này tăng niềm tin của người dùng: theo Google (2025), các ứng dụng yêu cầu hơn 5 quyền khi khởi chạy lần đầu có tỷ lệ chuyển đổi đăng ký thấp hơn 30%. Mô hình quyền truy cập này trong ứng dụng di động được xác nhận qua thực tiễn của chúng tôi.

Tham số iOS Android
Cơ chếYêu cầu khi truy cập tài nguyên lần đầuYêu cầu khi truy cập lần đầu (Runtime Permission)
Mô tả mục đíchInfo.plist (Privacy — Usage Description)shouldShowRequestPermissionRationale (tùy chọn)
Thu hồi quyềnCài đặt → Quyền riêng tưCài đặt → Ứng dụng → Quyền
NhómKhông (mỗi quyền riêng lẻ)Permission Groups (ví dụ: STORAGE)
ID quảng cáoIDFA (cần ATT)GAID / AAID (Google Play Services)
Quyền riêng tưPrivacy Manifest (từ 2024)Data Safety Section (Google Play)

Bảng 4. So sánh mô hình quyền iOS và Android. Sự khác biệt chính: iOS yêu cầu mô tả văn bản rõ ràng về mục đích sử dụng từng quyền trong Info.plist. Android cung cấp shouldShowRequestPermissionRationale để giải thích cho người dùng tại sao cần quyền. Hiểu sự khác biệt về quyền truy cập giữa các nền tảng giúp chọn mô hình phù hợp.

Loại quyền (Normal, Dangerous, Runtime)

Normal Permissions — quyền không gây nguy hiểm cho quyền riêng tư của người dùng. Chúng được cấp tự động khi cài đặt: INTERNET, ACCESS_NETWORK_STATE, VIBRATE, BLUETOOTH. Nhà phát triển không cần yêu cầu chúng trong mã. Phân loại quyền truy cập này tương ứng với mức độ rủi ro về quyền riêng tư.

Dangerous Permissions — quyền yêu cầu truy cập vào dữ liệu cá nhân: CAMERA, RECORD_AUDIO, ACCESS_FINE_LOCATION, READ_CONTACTS, READ_CALENDAR, READ_EXTERNAL_STORAGE. Chúng yêu cầu runtime request. Permission Group — nhóm các quyền liên quan: nếu người dùng cho phép CAMERA, quyền ghi video (RECORD_AUDIO? không, đó là nhóm riêng) — không, CAMERA và RECORD_AUDIO nằm trong các nhóm khác nhau.

Runtime Permission — gọi ActivityCompat.requestPermissions() trên Android hoặc yêu cầu qua CLLocationManager.requestWhenInUseAuthorization() trên iOS. Người dùng có thể trả lời: Grant (cho phép), Deny (từ chối) hoặc «Không hỏi lại» (trên Android sau hai lần từ chối). Cấu hình quyền truy cập trong ứng dụng di động cần tính đến hành vi của người dùng.

Runtime Permission

Runtime Permission trên Android yêu cầu kiểm tra trạng thái hiện tại trước mỗi lần sử dụng. Phương thức shouldShowRequestPermissionRationale() trả về true nếu người dùng đã từ chối — đây là tín hiệu để hiển thị hộp thoại giải thích. Trên iOS, tương đương là kiểm tra trạng thái: .notDetermined, .denied, .authorized, .restricted. Quyền riêng tư của ứng dụng di động yêu cầu giám sát liên tục trạng thái quyền.

kotlin
// Kotlin — yêu cầu quyền runtime cho camera
class CameraActivity : AppCompatActivity() {

    companion object {
        private const val CAMERA_PERMISSION_CODE = 100
    }

    private fun requestCameraPermission() {
        when {
            ContextCompat.checkSelfPermission(
                this, Manifest.permission.CAMERA
            ) == PackageManager.PERMISSION_GRANTED -> {
                openCamera()
            }
            shouldShowRequestPermissionRationale(Manifest.permission.CAMERA) -> {
                showRationaleDialog("Cần quyền truy cập camera để quét mã QR")
            }
            else -> {
                requestPermissions(
                    arrayOf(Manifest.permission.CAMERA),
                    CAMERA_PERMISSION_CODE
                )
            }
        }
    }

    override fun onRequestPermissionsResult(
        requestCode: Int,
        permissions: Array<String>,
        grantResults: IntArray
    ) {
        if (requestCode == CAMERA_PERMISSION_CODE &&
            grantResults.firstOrNull() == PackageManager.PERMISSION_GRANTED
        ) {
            openCamera()
        }
    }
}

Mã này thể hiện mẫu đúng: kiểm tra trạng thái → hiển thị giải thích (nếu cần) → yêu cầu quyền → xử lý kết quả. shouldShowRequestPermissionRationale là một phương thức quan trọng: nếu người dùng đã từ chối, hãy hiển thị hộp thoại giải thích tại sao cần quyền. Nếu không có điều này, người dùng có thể từ chối vĩnh viễn quyền truy cập.

Quyền riêng tư (ATT, Privacy Manifest, IDFA)

ATT (App Tracking Transparency) — một framework của Apple (iOS 14.5+) yêu cầu sự đồng ý rõ ràng của người dùng để theo dõi. Nếu không đồng ý, IDFA (Mã định danh cho nhà quảng cáo) trả về số không. Theo Flurry (2025), tỷ lệ chấp nhận ATT là 15–25% tùy theo khu vực và loại ứng dụng. Quản lý quyền truy cập trong ứng dụng di động bắt đầu bằng việc chọn framework phù hợp.

Privacy Manifest — tệp bắt buộc (từ 2024 cho ứng dụng mới, từ 2025 cho bản cập nhật) trong đó nhà phát triển khai báo loại dữ liệu ứng dụng thu thập và mục đích sử dụng. Apple kiểm tra sự phù hợp giữa Privacy Manifest và hành vi thực tế của ứng dụng trong quá trình xét duyệt. Quyền riêng tư trong ứng dụng di động phải được ghi chép lại.

App Tracking Transparency (ATT)

ATT yêu cầu thêm khóa Info.plist NSUserTrackingUsageDescription với mô tả lý do cần theo dõi và gọi ATTrackingManager.requestTrackingAuthorization(). Quan trọng: có nên yêu cầu ATT trước khi hiển thị đồng ý GDPR không? Không, ATT là yêu cầu riêng của Apple. Ở EU, hãy hiển thị banner GDPR trước, sau đó ATT. Quyền truy cập trong ứng dụng di động trên iOS yêu cầu cấu hình ATT bắt buộc.

IDFA được sử dụng để quy kết quảng cáo và cá nhân hóa. Trên Android, tương đương là GAID (Google Advertising ID) hoặc AAID (Amazon Advertising ID). Từ Android 13+, có quyền runtime để truy cập GAID (com.google.android.gms.permission.AD_ID). Quyền riêng tư của ứng dụng di động yêu cầu kiểm soát mã định danh quảng cáo.

GDPR và sự đồng ý của người dùng

GDPR (Quy định bảo vệ dữ liệu chung) — quy định của EU có hiệu lực từ tháng 5 năm 2018. Yêu cầu: sự đồng ý rõ ràng để thu thập dữ liệu cá nhân, quyền quản lý quyền truy cập, quyền xóa dữ liệu (quyền được lãng quên), thông báo vi phạm dữ liệu và chỉ định DPO (Nhân viên bảo vệ dữ liệu) cho các công ty lớn. Quy định cũng xác định mô hình quyền truy cập minh bạch trong ứng dụng di động.

Đối với ứng dụng di động, GDPR có nghĩa là: hiển thị banner đồng ý khi khởi chạy lần đầu (với mô tả rõ ràng về dữ liệu được thu thập và mục đích), khả năng từ chối các quyền không cần thiết và nút «Xóa tài khoản» trong cài đặt. Các công cụ GDPR phổ biến: OneTrust, Nền tảng quản lý đồng ý (CMP) của Google, Usercentrics. Đảm bảo quyền riêng tư trong ứng dụng di động yêu cầu tích hợp CMP.

Tại IT Sectr, chúng tôi triển khai đồng ý GDPR trong giai đoạn onboarding: người dùng thấy mô tả rõ ràng, chọn dữ liệu nào cho phép thu thập và có thể thay đổi lựa chọn trong cài đặt. Đây không chỉ là yêu cầu pháp lý mà còn là yếu tố tin cậy: các ứng dụng minh bạch có tỷ lệ giữ chân cao hơn 20% (dữ liệu IT Sectr, 2024). Quyền riêng tư và quản lý quyền truy cập trong ứng dụng di động là yếu tố chính để giữ chân người dùng.

Sự đồng ý phải: tự nguyện (không là không), cụ thể (không thể thu thập đồng ý «cho mọi thứ»), có thông tin (người dùng biết họ đồng ý với điều gì) và rõ ràng (cần hành động tích cực — hộp kiểm, nút bấm). Các hộp kiểm được đánh dấu sẵn bị GDPR cấm. Tiền phạt cho vi phạm — lên đến 4% doanh thu toàn cầu hoặc 20 triệu euro. Cấu hình đúng quyền truy cập trong ứng dụng di động giúp tránh bị phạt.

Mẹo thực tế

Dựa trên kinh nghiệm của IT Sectr — một số khuyến nghị thực tế khi làm việc với quyền và quyền riêng tư. Yêu cầu quyền trong ngữ cảnh: hiển thị màn hình giải thích tại sao cần quyền trước hộp thoại hệ thống. Ví dụ, trước khi yêu cầu camera, hãy hiển thị: «Chúng tôi cần quyền truy cập camera để quét mã QR» — điều này tăng khả năng đồng ý lên 40%. Quyền truy cập trong ứng dụng di động nên được yêu cầu trong ngữ cảnh sử dụng.

Không yêu cầu tất cả quyền khi khởi chạy lần đầu. Yêu cầu quyền theo ngữ cảnh (yêu cầu tại thời điểm sử dụng) cho tỷ lệ chuyển đổi cao hơn 60% so với yêu cầu trong quá trình onboarding. Xử lý từ chối một cách khéo léo: nếu người dùng từ chối, không chặn chức năng mà đưa ra giải pháp thay thế (ví dụ: nhập địa chỉ thủ công thay vì định vị). Quyền riêng tư trong ứng dụng di động được hưởng lợi từ cách tiếp cận này.

Đối với iOS, hãy đảm bảo thêm Privacy Manifest (bắt buộc cho tất cả ứng dụng từ 2025). Đối với Android, chỉ định Data Safety Section trong Google Play Console. Lưu trữ trạng thái của tất cả quyền cục bộ và đồng bộ với cài đặt hệ thống. Thường xuyên kiểm tra tuân thủ — luật pháp thay đổi nhanh chóng. Mô hình quyền truy cập và quyền riêng tư của ứng dụng di động yêu cầu kiểm toán liên tục.

Câu hỏi thường gặp

ATT (App Tracking Transparency) là gì?

ATT là framework của Apple (iOS 14.5+) yêu cầu yêu cầu rõ ràng để theo dõi người dùng. Nếu không đồng ý, IDFA trả về số không. Yêu cầu ATT phải chứa mô tả rõ ràng về mục đích theo dõi. Tỷ lệ chấp nhận là 15–25% tùy theo ứng dụng. Quyền truy cập trong ứng dụng di động trên iOS yêu cầu mô tả rõ ràng về mục đích theo dõi.

Sự khác biệt giữa Normal và Dangerous Permission trên Android là gì?

Normal Permissions được cấp tự động khi cài đặt — không cần yêu cầu (INTERNET, VIBRATE). Dangerous Permissions yêu cầu runtime request (CAMERA, LOCATION, MICROPHONE) — người dùng có thể từ chối bất cứ lúc nào. Normal không ảnh hưởng đến quyền riêng tư; Dangerous cấp quyền truy cập vào dữ liệu cá nhân.

GDPR ảnh hưởng đến ứng dụng di động như thế nào?

GDPR yêu cầu: sự đồng ý rõ ràng để thu thập dữ liệu, khả năng xóa tài khoản và dữ liệu, thông báo vi phạm. Đối với ứng dụng: banner đồng ý khi khởi chạy lần đầu, mô tả rõ ràng mục đích thu thập dữ liệu, nút «Xóa tài khoản» trong cài đặt, bao gồm quản lý quyền truy cập. Tiền phạt — lên đến 4% doanh thu.

IDFA là gì và tại sao cần nó?

IDFA (Mã định danh cho nhà quảng cáo) là mã định danh quảng cáo duy nhất của thiết bị trên iOS. Nó được sử dụng để nhắm mục tiêu quảng cáo và quy kết cài đặt. Từ iOS 14.5, để truy cập IDFA cần có sự đồng ý qua ATT. Trên Android, tương đương là GAID (Google Advertising ID). Quyền riêng tư của ứng dụng di động yêu cầu kiểm soát mã định danh quảng cáo.

Tổng kết

  • Runtime Permission — mô hình yêu cầu quyền hiện đại «tại thời điểm sử dụng», không phải khi cài đặt. Tăng niềm tin của người dùng.
  • Android: quyền Normal (tự động) và Dangerous (runtime). Permission Groups để nhóm. shouldShowRequestPermissionRationale để giải thích.
  • iOS: ATT (App Tracking Transparency) cho IDFA. Privacy Manifest (bắt buộc từ 2025). Usage Description trong Info.plist cho mỗi quyền.
  • GDPR — quy định châu Âu: đồng ý rõ ràng, quyền xóa, minh bạch. Tiền phạt lên đến 4% doanh thu. Công cụ: OneTrust, Google CMP.
  • IDFA (iOS) và GAID/AAID (Android) — mã định danh quảng cáo. Cần ATT cho IDFA (tỷ lệ chấp nhận 15–25%).
  • Thực hành tốt nhất: yêu cầu theo ngữ cảnh (tỷ lệ chuyển đổi cao hơn 60%), xử lý từ chối khéo léo, Privacy Manifest, kiểm toán tuân thủ định kỳ.
  • Quyền truy cập trong ứng dụng di động và quyền riêng tư — nền tảng của niềm tin người dùng. Ứng dụng minh bạch có tỷ lệ giữ chân cao hơn 20% (dữ liệu IT Sectr, 2024).

Chúng tôi sẽ phát triển ứng dụng di động chìa khóa trao tay

IT Sectr tạo các ứng dụng iOS và Android cho các công ty khởi nghiệp và doanh nghiệp từ năm 2017. Chúng tôi sẽ tư vấn và đề xuất giải pháp tốt nhất cho bạn.

Thảo luận dự án