HealthKit: nó là gì, cách hoạt động và tích hợp

Tác giả: IT Sectr Đã đăng: 2026-03-25 Thời gian đọc: 8 phút

Framework HealthKit là thành phần trung tâm của hệ sinh thái sức khỏe Apple, tổng hợp dữ liệu từ iPhone, Apple Watch và các thiết bị bên thứ ba vào một kho lưu trữ cục bộ an toàn. Theo Apple Developer Documentation, 2025, nền tảng này hỗ trợ hơn 100 loại dữ liệu — từ hoạt động thể chất và giấc ngủ đến xét nghiệm phòng thí nghiệm và chỉ số tim mạch. Một kho lưu trữ duy nhất thông tin y tế đảm bảo đồng bộ hóa liền mạch giữa các ứng dụng với kiểm soát truy cập chi tiết cho từng loại dữ liệu.

Những điểm chính

  • HealthKit là framework của Apple để thu thập, lưu trữ và chia sẻ dữ liệu sức khỏe giữa các ứng dụng iOS.
  • HKHealthStore là đối tượng trung tâm mà qua đó các ứng dụng tương tác với dữ liệu sức khỏe.
  • Các loại dữ liệu được chia thành định lượng HKQuantityType và phân loại HKCategoryType.
  • Quyền riêng tư — mỗi ứng dụng yêu cầu quyền đọc và ghi riêng cho từng loại dữ liệu.
  • Apple Watch tự động truyền dữ liệu hoạt động, nhịp tim và bài tập đến HealthKit.

HealthKit là gì?

HealthKit là framework của Apple, được giới thiệu vào năm 2014 cùng với iOS 8, được thiết kế để quản lý tập trung dữ liệu sức khỏe và hoạt động thể chất của người dùng. Nền tảng này hoạt động như một kho lưu trữ thống nhất nơi các ứng dụng và thiết bị có thể ghi và đọc thông tin y tế.

Không giống như các giải pháp bên thứ ba, HealthKit được tích hợp trực tiếp vào hệ điều hành iOS, đảm bảo hiệu suất cao và bảo mật ở cấp độ phần cứng. Các ứng dụng không có quyền truy cập trực tiếp lẫn nhau — tất cả các hoạt động đều thông qua HKHealthStore trung tâm.

Theo Apple WWDC 2024, hơn 87% người dùng iPhone tại Mỹ đã sử dụng ứng dụng Sức khỏe tích hợp ít nhất một lần, ứng dụng này dựa trên HealthKit. Hệ sinh thái bao gồm hàng nghìn ứng dụng bên thứ ba — từ trình theo dõi thể dục đến dịch vụ y tế từ xa.

Kiến trúc HealthKit

Kiến trúc HealthKit được xây dựng trên nguyên tắc lưu trữ đa cấp với các vùng chứa riêng biệt cho mỗi nguồn dữ liệu. Ở cấp thấp hơn là cơ sở dữ liệu SQLite được mã hóa bằng AES-256 phần cứng. Ở cấp trên là HKHealthStore — giao diện tương tác thống nhất.

Mỗi bản ghi chứa siêu dữ liệu: nguồn HKSource, thiết bị HKDevice, ngày, giờ và cờ đồng bộ hóa iCloud. Hệ thống tự động loại bỏ trùng lặp các bản ghi từ cùng một nguồn, ngăn chặn sự sai lệch dữ liệu.

Dữ liệu được nhóm theo loại — HKQuantityType cho các chỉ số số (nhịp tim, số bước, calo) và HKCategoryType cho các sự kiện phân loại (giấc ngủ, triệu chứng, chu kỳ kinh nguyệt). Cấu trúc này cho phép truy vấn linh hoạt bất kỳ tổ hợp tham số nào thông qua HKSampleQuery hoặc HKStatisticsQuery.

Các loại dữ liệu trong HealthKit

HealthKit hỗ trợ hơn 100 loại dữ liệu chuẩn hóa, được chia thành các danh mục: hoạt động thể chất, dinh dưỡng, giấc ngủ, hệ tim mạch, sức khỏe sinh sản, kết quả xét nghiệm và dấu hiệu sinh tồn. Mỗi loại có đơn vị đo HKUnit và mức truy cập.

Các nhà phát triển cũng có thể tạo tương quan tùy chỉnh thông qua HKCorrelation — một nhóm các phép đo liên quan. Ví dụ: bản ghi bữa ăn có thể bao gồm calo, protein, chất béo và carbohydrate như một đối tượng duy nhất. Đối với các phép đo tuần tự như mức glucose, HKSeriesSample được sử dụng.

Làm việc với HealthKit bắt đầu bằng cách định nghĩa HKHealthStore — một singleton được tạo tự động khi import framework. Thông qua store, ứng dụng kiểm tra xem nền tảng có khả dụng trên thiết bị hay không, vì iPad và iPod touch có thể không được hỗ trợ. Cũng cần lưu ý rằng HealthKit không khả dụng trên Mac Catalyst — macOS yêu cầu triển khai riêng.

swift
import HealthKit

let healthStore = HKHealthStore()

let stepType = HKQuantityType
    .quantityType(forIdentifier: .stepCount)

let heartRateType = HKQuantityType
    .quantityType(forIdentifier: .heartRate)

let typesToRead: Set = [stepType, heartRateType]

Cách HealthKit hoạt động

HealthKit hoạt động như một trung gian giữa các nguồn dữ liệu và ứng dụng, sử dụng mô hình xuất bản-đăng ký không đồng bộ. Ứng dụng nguồn ghi dữ liệu thông qua HKHealthStore và các ứng dụng đăng ký nhận thông báo về bản ghi mới thông qua HKObserverQuery, chạy trong nền.

Framework hỗ trợ đồng bộ hóa nền qua iCloud: nếu người dùng đã đăng nhập, HealthKit tự động phân phối dữ liệu đến tất cả các thiết bị Apple theo thời gian thực. Khi không có mạng, các thay đổi được lưu vào bộ đệm cục bộ và đồng bộ hóa khi kết nối được khôi phục mà không mất dữ liệu.

Theo Apple, độ trễ đồng bộ hóa giữa iPhone và Apple Watch dưới 30 giây đối với dữ liệu hoạt động. Đối với các loại khác — giấc ngủ, dinh dưỡng, kết quả xét nghiệm — đồng bộ hóa diễn ra theo lịch trình với khoảng cách lên đến 15 phút để tiết kiệm pin.

HKHealthStore và các thao tác dữ liệu

HKHealthStore là singleton trung tâm thông qua đó tất cả các thao tác được thực hiện: lưu qua saveObject, đọc qua execute và xóa qua deleteObject. Mỗi thao tác đều không đồng bộ và trả về kết quả thông qua closure, yêu cầu xử lý lỗi thích hợp.

Các truy vấn được chia thành nhiều loại: HKSampleQuery để truy xuất bản ghi theo tiêu chí, HKStatisticsQuery cho dữ liệu tổng hợp — tổng, trung bình, tối thiểu, tối đa — và HKObserverQuery để theo dõi thay đổi theo thời gian thực. Để cập nhật nền định kỳ, HKHeartbeatSeriesQuery được sử dụng.

swift
let type = HKQuantityType
    .quantityType(forIdentifier: .stepCount)
let now = Date()
let start = Calendar.current
    .date(
        byAdding: .day,
        value: -7,
        to: now
    )
let predicate = HKQuery
    .predicateForSamples(
        withStart: start,
        end: now,
        options: .strictStartDate
    )
let query = HKSampleQuery(
    sampleType: type,
    predicate: predicate,
    limit: 100
) { _, samples, _ in
    for sample in samples as [HKQuantitySample] {
        print(sample.quantity)
    }
}
healthStore.execute(query)

Tích hợp HealthKit vào ứng dụng

Tích hợp HealthKit bắt đầu bằng bật khả năng HealthKit trong Xcode và thêm entitlement vào dự án. Sau đó, ứng dụng yêu cầu quyền truy cập vào các loại dữ liệu cụ thể thông qua lệnh gọi requestAuthorization. Quan trọng: HealthKit không khả dụng trên trình mô phỏng và yêu cầu thiết bị vật lý có iOS.

Quy trình tích hợp bao gồm ba giai đoạn: xác định loại dữ liệu, yêu cầu ủy quyền và thực hiện các thao tác đọc và ghi. Mỗi giai đoạn đều không đồng bộ và phải xử lý lỗi — người dùng có thể từ chối quyền truy cập vào bất kỳ loại dữ liệu nào trong hộp thoại hệ thống với các nút chuyển đổi.

Theo nghiên cứu của Apple, các ứng dụng tích hợp HealthKit cho thấy mức độ tương tác người dùng cao hơn 40%. Yếu tố thành công chính là giải thích lý do ứng dụng cần dữ liệu sức khỏe cụ thể trong mô tả yêu cầu ủy quyền.

Yêu cầu ủy quyền

Yêu cầu ủy quyền được thực hiện một lần khi khởi chạy lần đầu. Ứng dụng chỉ định hai bộ loại — để đọc và để ghi. Người dùng thấy một hộp thoại hệ thống với các nút chuyển đổi cho từng loại dữ liệu và có thể cấp quyền truy cập một cách chọn lọc, từ chối các danh mục không cần thiết.

swift
let typesToWrite: Set = [
    HKQuantityType
        .quantityType(
            forIdentifier: .dietaryEnergyConsumed
        )
]
let typesToRead: Set = [
    HKQuantityType
        .quantityType(
            forIdentifier: .stepCount
        )
]

healthStore.requestAuthorization(
    toShare: typesToWrite,
    read: typesToRead
) { success, error in
    if success {
        print("Đã nhận được ủy quyền")
    }
}

Bảo mật HealthKit

HealthKit triển khai mô hình bảo mật đa lớp bao gồm mã hóa phần cứng, sandboxing ứng dụng và quyền chi tiết. Tất cả dữ liệu sức khỏe được lưu trữ mã hóa trên thiết bị và không được truyền đến iCloud nếu không có sự đồng ý riêng của người dùng, được yêu cầu một lần.

Một tính năng chính là cơ chế Intent: ứng dụng không có quyền truy cập nền liên tục vào dữ liệu. Mỗi yêu cầu đọc hoặc ghi được hệ điều hành xác minh và người dùng có thể thu hồi quyền bất kỳ lúc nào thông qua Cài đặt — Quyền riêng tư — Sức khỏe mà không cần cài đặt lại ứng dụng.

Apple quy định chặt chẽ việc sử dụng HealthKit trong Nguyên tắc đánh giá App Store. Ứng dụng không thể chuyển dữ liệu HealthKit cho bên thứ ba nếu không có sự đồng ý rõ ràng, không thể sử dụng chúng cho quảng cáo hoặc nhắm mục tiêu và không thể lưu trữ chúng lâu hơn mức cần thiết cho chức năng đã khai báo.

Giới hạn và hạn chế

HealthKit có một số giới hạn: kích thước cơ sở dữ liệu tối đa trên thiết bị là 1 GB, giới hạn số bản ghi trong một truy vấn là 1000 và khoảng thời gian tối thiểu giữa các loại dữ liệu giống nhau là 1 giây. Framework cũng giới hạn cập nhật nền — không quá 60 lần kích hoạt HKObserverQuery mỗi ngày.

Những giới hạn này được bù đắp bằng hiệu suất: đọc 1000 bản ghi mất trung bình 50–100 mili giây và ghi một bản ghi mất dưới 10 mili giây. Đối với khối lượng dữ liệu lớn, nên sử dụng HKStatisticsCollectionQuery với tổng hợp trước thay vì truy xuất từng bản ghi riêng lẻ. HealthKit xử lý các truy vấn không đồng bộ — ứng dụng không bị chặn trong khi chờ dữ liệu từ HKHealthStore.

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

Những thiết bị nào hỗ trợ HealthKit?

HealthKit được hỗ trợ trên tất cả các thiết bị có iOS 8 trở lên, bao gồm iPhone, iPad và iPod touch. Apple Watch tự động truyền dữ liệu qua iPhone được ghép nối. Các thiết bị bên thứ ba — vòng đeo thể dục, cân, máy đo huyết áp — có thể ghi dữ liệu thông qua API HealthKit nếu có ứng dụng tương ứng.

Có thể xuất dữ liệu từ HealthKit không?

Có, ứng dụng Sức khỏe cho phép xuất tất cả dữ liệu ở định dạng XML thông qua chức năng “Xuất dữ liệu sức khỏe”. Các nhà phát triển có thể đọc theo chương trình bất kỳ loại được phép nào thông qua HKSampleQuery và xuất sang định dạng của riêng họ. Dữ liệu sức khỏe không thể được chuyển đến máy chủ bên thứ ba nếu không có sự đồng ý rõ ràng của người dùng.

HealthKit xử lý việc xóa dữ liệu như thế nào?

Người dùng có thể xóa dữ liệu thông qua ứng dụng Sức khỏe hoặc thông qua ứng dụng nguồn đã ghi lại dữ liệu đó. Sau khi xóa, dữ liệu không thể khôi phục — HealthKit không có thùng rác. Thao tác xóa là không thể đảo ngược, do đó các ứng dụng nên yêu cầu xác nhận trước khi thực hiện deleteObject.

HealthKit khác ResearchKit như thế nào?

HealthKit được thiết kế để lưu trữ và chia sẻ dữ liệu sức khỏe người dùng, trong khi ResearchKit là framework để tiến hành nghiên cứu y tế. ResearchKit sử dụng HealthKit như một trong những nguồn dữ liệu của mình, nhưng thêm các mô-đun về sự đồng ý có hiểu biết, bảng câu hỏi và nhiệm vụ chủ động để thu thập dữ liệu nghiên cứu.

Có cần giấy phép đặc biệt cho HealthKit trên App Store không?

Có, các ứng dụng sử dụng HealthKit phải tuân thủ Nguyên tắc đánh giá App Store, mục 5.1.1 — Dữ liệu Y tế và Sức khỏe. Yêu cầu mô tả rõ ràng về việc sử dụng dữ liệu trong ứng dụng, chính sách quyền riêng tư, cấm sử dụng dữ liệu cho quảng cáo và mã hóa trong quá trình truyền mạng.

Tổng kết

  • HealthKit là framework tiêu chuẩn của Apple để quản lý dữ liệu sức khỏe trong iOS, được giới thiệu vào năm 2014.
  • HKHealthStore là giao diện trung tâm cho tất cả các thao tác: lưu, đọc và xóa dữ liệu sức khỏe.
  • Nền tảng hỗ trợ hơn 100 loại dữ liệu — từ hoạt động thể chất đến xét nghiệm phòng thí nghiệm.
  • Quyền riêng tư dữ liệu được đảm bảo bằng mã hóa phần cứng AES-256 và quyền chi tiết.
  • Đồng bộ hóa giữa các thiết bị Apple diễn ra qua iCloud với độ trễ dưới 30 giây.
  • Tích hợp yêu cầu thiết lập entitlements trong Xcode và yêu cầu ủy quyền bắt buộc từ người dùng.
  • Bảo mật HealthKit được kiểm soát thông qua cài đặt quyền riêng tư của hệ thống và chính sách App Store.

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

Đọc thêm