Ủy quyền dữ liệu sức khỏe là quá trình nhận được sự đồng ý rõ ràng của người dùng để đọc và ghi dữ liệu y tế và thể dục thông qua các API hệ thống của nền tảng di động. Trên iOS, ủy quyền được thực hiện qua HealthKit với các lớp HKHealthStore và HKObjectType, còn trên Android — qua Google Fit API với OAuth 2.0 và FitnessOptions. Theo Apple HealthKit Documentation, 2025, dữ liệu sức khỏe được phân loại là loại đặc biệt nhạy cảm. Độ chính xác y tế và tuân thủ quy định là những yêu cầu quan trọng khi làm việc với dữ liệu như vậy.
Điểm chính
Ủy quyền dữ liệu sức khỏe là cơ chế yêu cầu sự đồng ý rõ ràng và có tài liệu của người dùng trước khi truy cập vào các chỉ số y tế và thể dục của họ. Khác với các quyền tiêu chuẩn (danh bạ, lịch), dữ liệu sức khỏe chịu sự điều chỉnh của các quy định pháp lý bổ sung: HIPAA tại Mỹ, GDPR tại châu Âu và 152-FZ tại Nga.
Trên iOS, ủy quyền sức khỏe được thực hiện qua HealthKit: người dùng thấy màn hình với danh sách tất cả các loại dữ liệu mà ứng dụng yêu cầu và có thể chọn các danh mục cụ thể để cấp quyền truy cập. Trên Android, sử dụng Google Fit API với ủy quyền qua OAuth 2.0, trong đó mỗi loại dữ liệu yêu cầu một scope riêng biệt.
Theo App Annie (2025), ứng dụng sức khỏe và thể dục là một trong những phân khúc phát triển nhanh nhất của thị trường di động với tốc độ tăng trưởng hàng năm 28%. Trong khi đó, 71% người dùng từ chối truy cập vào dữ liệu sức khỏe nếu ứng dụng không cung cấp lời giải thích rõ ràng về mục đích thu thập.
Sự khác biệt chính của ủy quyền sức khỏe so với các quyền khác là khả năng cấp quyền truy cập một phần. Người dùng có thể cho phép đọc số bước nhưng từ chối truy cập vào dữ liệu nhịp tim hoặc hồ sơ y tế.
HealthKit là khung của Apple, được giới thiệu trong iOS 8, cung cấp một kho lưu trữ dữ liệu sức khỏe tập trung duy nhất. Các ứng dụng không có quyền truy cập trực tiếp vào HealthKit — chúng yêu cầu ủy quyền qua HKHealthStore và người dùng quyết định loại dữ liệu nào sẽ được cung cấp. Tất cả dữ liệu được mã hóa trên thiết bị và đồng bộ qua iCloud với mã hóa đầu cuối.
Quá trình ủy quyền bắt đầu bằng việc tạo một phiên bản của HKHealthStore và gọi phương thức requestAuthorization(toShare:read:). Ứng dụng truyền hai tập hợp loại: để đọc (HKObjectType mà ứng dụng muốn đọc) và để ghi (HKSampleType mà ứng dụng muốn lưu). Hệ thống hiển thị màn hình đồng ý, nơi người dùng bật hoặc tắt từng loại riêng lẻ.
Một đặc điểm quan trọng: HealthKit không hiển thị cho nhà phát triển biết người dùng đã cho phép những loại nào trên màn hình đồng ý. Sau khi gọi requestAuthorization, cần kiểm tra quyền truy cập vào từng loại riêng lẻ qua HKHealthStore.authorizationStatus(for:). Theo WWDC Session 11108 (2024), Apple khuyến nghị kiểm tra trạng thái ủy quyền trước mỗi thao tác đọc hoặc ghi.
HealthKit hỗ trợ hàng trăm loại dữ liệu, được chia thành các danh mục: số lượng (bước, nhịp tim, calo), đặc điểm (chiều cao, cân nặng, ngày sinh), hồ sơ lâm sàng (dị ứng, tiêm chủng, kết quả xét nghiệm), triệu chứng và chu kỳ kinh nguyệt. Mỗi loại được đại diện bởi một lớp con của HKObjectType: HKQuantityType cho dữ liệu số và HKCategoryType cho dữ liệu phân loại.
Với iOS 18, Apple đã mở rộng HealthKit để hỗ trợ dữ liệu từ các cơ sở y tế qua FHIR (Fast Healthcare Interoperability Resources). Các ứng dụng có thể yêu cầu truy cập vào hồ sơ y tế có cấu trúc nếu người dùng đã kết nối bệnh viện hoặc phòng khám của họ với ứng dụng Health.
Google Fit là nền tảng cho dữ liệu thể dục trên Android sử dụng ủy quyền qua OAuth 2.0. Khác với HealthKit, Google Fit không được tích hợp vào hệ điều hành ở cấp hệ thống — nó là một dịch vụ riêng biệt của Google Play Services yêu cầu đăng ký qua Google Play Console và tạo thông tin xác thực OAuth 2.0.
Để truy cập Google Fit, ứng dụng phải đăng ký OAuth 2.0 client ID trong Google Cloud Console. Ủy quyền được yêu cầu qua GoogleSignInAccount và GoogleSignIn.requestPermissions(). Người dùng thấy màn hình đồng ý tiêu chuẩn của Google với danh sách các scope được yêu cầu: fitness.activity.read, fitness.body.read, fitness.nutrition.write và các scope khác.
Google Fit tách biệt quyền đọc và ghi cho mỗi loại dữ liệu. Ứng dụng có thể yêu cầu quyền đọc số bước mà không cần yêu cầu quyền ghi. Kể từ Google Fit API v2, tất cả các yêu cầu ủy quyền phải bao gồm mô tả mục đích sử dụng dữ liệu — nếu không, yêu cầu sẽ bị từ chối bởi quy trình kiểm duyệt của Google.
Lớp FitnessOptions cho phép chỉ định một cách khai báo những loại dữ liệu nào cần truy cập. Đối với mỗi loại, có thể đặt mức độ truy cập: ACCESS_READ, ACCESS_WRITE hoặc cả hai. Tập hợp quyền được truyền cho GoogleSignin.requestPermissions() cùng với tài khoản người dùng.
Danh sách các loại khả dụng bao gồm: bước (DataType.TYPE_STEP_COUNT_DELTA), calo (TYPE_CALORIES_EXPENDED), nhịp tim (TYPE_HEART_RATE_BPM), khoảng cách (TYPE_DISTANCE_DELTA), hoạt động (TYPE_ACTIVITY_SEGMENT) và giấc ngủ (TYPE_SLEEP_SEGMENT). Mỗi loại có tần suất cập nhật và yêu cầu quyền riêng.
Việc triển khai yêu cầu ủy quyền dữ liệu sức khỏe khác nhau đáng kể giữa iOS và Android. Dưới đây là các ví dụ hoạt động cho HealthKit và Google Fit API.
Trong Swift, yêu cầu ủy quyền HealthKit được thực hiện qua HKHealthStore với việc chỉ định các loại để đọc và ghi. Ví dụ minh họa yêu cầu truy cập vào dữ liệu bước và nhịp tim.
import HealthKit
let healthStore = HKHealthStore()
let readTypes: Set<HKObjectType> = [
HKObjectType.quantityType(forIdentifier: .stepCount)!,
HKObjectType.quantityType(forIdentifier: .heartRate)!
]
let writeTypes: Set<HKSampleType> = [
HKObjectType.quantityType(forIdentifier: .stepCount)!
]
guard HKHealthStore.isHealthDataAvailable() else {
fatalError("HealthKit không khả dụng trên thiết bị này")
}
healthStore.requestAuthorization(toShare: writeTypes, read: readTypes) { success, error in
if success {
// Kiểm tra trạng thái của từng loại riêng biệt
let status = healthStore.authorizationStatus(for: readTypes.first!)
print("Ủy quyền HealthKit: \(status.rawValue)")
} else {
print("Lỗi ủy quyền HealthKit: \(error?.localizedDescription ?? "không xác định")")
}
}
Trên Android, ủy quyền Google Fit được thực hiện qua GoogleSignIn và FitnessOptions. Ví dụ minh họa yêu cầu truy cập vào dữ liệu bước và calo.
val fitnessOptions = FitnessOptions.builder()
.addDataType(DataType.TYPE_STEP_COUNT_DELTA, FitnessOptions.ACCESS_READ)
.addDataType(DataType.TYPE_CALORIES_EXPENDED, FitnessOptions.ACCESS_READ)
.build()
val account = GoogleSignIn.getAccountForExtension(this, fitnessOptions)
if (!GoogleSignIn.hasPermissions(account, fitnessOptions)) {
GoogleSignIn.requestPermissions(
this,
REQUEST_GOOGLE_FIT,
account,
fitnessOptions
)
} else {
// Đã có quyền — đang đọc dữ liệu
readGoogleFitData(account)
}
// Xử lý kết quả yêu cầu quyền
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
if (requestCode == REQUEST_GOOGLE_FIT && resultCode == RESULT_OK) {
val account = GoogleSignIn.getSignedInAccountFromIntent(data)
account?.let { readGoogleFitData(it) }
}
}
Dữ liệu sức khỏe thuộc loại đặc biệt nhạy cảm của dữ liệu cá nhân. Các nhà phát triển ứng dụng làm việc với HealthKit hoặc Google Fit phải tuân thủ các yêu cầu quy định hiện hành tại khu vực của người dùng.
Tại Mỹ, dữ liệu sức khỏe được điều chỉnh bởi luật HIPAA (Health Insurance Portability and Accountability Act), đặt ra các yêu cầu nghiêm ngặt về lưu trữ, truyền tải và xử lý thông tin y tế. Các ứng dụng làm việc với HealthKit có thể tuân thủ HIPAA nếu dữ liệu được truyền đến máy chủ ở dạng mã hóa và quyền truy cập bị hạn chế.
Tại Liên minh châu Âu, dữ liệu sức khỏe được coi là loại dữ liệu cá nhân đặc biệt theo GDPR (Điều 9). Việc xử lý dữ liệu như vậy yêu cầu sự đồng ý rõ ràng của người dùng và trong hầu hết các trường hợp, cần thực hiện đánh giá tác động bảo vệ dữ liệu. Vi phạm các yêu cầu GDPR có thể bị phạt tới 20 triệu euro hoặc 4% doanh thu toàn cầu hàng năm của công ty.
Tại Nga, việc thu thập dữ liệu sức khỏe được điều chỉnh bởi luật 152-FZ «Về dữ liệu cá nhân». Từ năm 2025, tất cả các ứng dụng xử lý dữ liệu y tế của công dân Nga buộc phải sử dụng các công cụ mã hóa được chứng nhận và lưu trữ dữ liệu trên các máy chủ đặt tại lãnh thổ Liên bang Nga, theo yêu cầu của Roskomnadzor.
Khuyến nghị: trước khi xuất bản ứng dụng làm việc với dữ liệu sức khỏe, hãy tham khảo ý kiến bộ phận pháp lý để kiểm tra việc tuân thủ các quy định địa phương. Apple và Google có quyền từ chối ứng dụng nếu chính sách bảo mật của nó không đáp ứng các yêu cầu.
Câu hỏi thường gặp
HealthKit là một khung iOS tích hợp với kho lưu trữ dữ liệu sức khỏe được mã hóa cục bộ. Google Fit là dịch vụ đám mây dựa trên Google Play Services, sử dụng OAuth 2.0 để ủy quyền. HealthKit hoạt động ngoại tuyến, Google Fit yêu cầu kết nối internet để đồng bộ.
Có, trên cả hai nền tảng. Trên iOS, người dùng chọn các loại dữ liệu cụ thể (bước, nhịp tim, giấc ngủ) trên màn hình đồng ý của HealthKit. Trên Android, người dùng thấy danh sách các scope của Google Fit và có thể thu hồi từng quyền riêng lẻ qua cài đặt tài khoản Google.
HKHealthStore là lớp trung tâm của khung HealthKit trên iOS. Nó quản lý ủy quyền, đọc và ghi tất cả dữ liệu sức khỏe. Ứng dụng không thể truy cập trực tiếp vào kho lưu trữ HealthKit — tất cả các thao tác đều thông qua HKHealthStore, đảm bảo giao diện truy cập thống nhất và tuân thủ quyền truy cập của người dùng.
Người dùng có thể thu hồi quyền truy cập qua Cài đặt Google — Quản lý tài khoản — Bảo mật — Ứng dụng bên thứ ba có quyền truy cập. Chọn ứng dụng và nhấp «Xóa quyền truy cập». Cũng có thể thu hồi quyền truy cập qua Google Play Console: Dịch vụ được kết nối — Google Fit — Quản lý ứng dụng.
Nếu ứng dụng xử lý dữ liệu sức khỏe của người dùng tại Mỹ và truyền dữ liệu lên máy chủ, việc tuân thủ HIPAA là bắt buộc. Nếu tất cả dữ liệu vẫn ở cục bộ trên thiết bị và không được truyền cho bên thứ ba, ứng dụng có thể không cần tuân thủ HIPAA, nhưng Apple khuyến nghị tuân theo các phương pháp bảo mật tốt nhất bất kể khu vực tài phán.
Tổng kết
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.
Đọc thêm