HealthKit: co to jest, zasady działania i integracja

Autor: IT Sectr Opublikowano: 2026-03-25 Czas czytania: 8 min

Framework HealthKit to centralny komponent ekosystemu zdrowia Apple, który agreguje dane z iPhone, Apple Watch i urządzeń firm trzecich w chronionym lokalnym magazynie. Według Apple Developer Documentation, 2025, platforma obsługuje ponad 100 typów danych — od aktywności fizycznej i snu po analizy laboratoryjne i wskaźniki układu sercowo-naczyniowego. Jednolity magazyn informacji medycznych zapewnia bezszwową synchronizację między aplikacjami przy szczegółowej kontroli dostępu dla każdego typu danych.

Najważniejsze

  • HealthKit — framework Apple do zbierania, przechowywania i wymiany danych o zdrowiu między aplikacjami iOS.
  • HKHealthStore — centralny obiekt, przez który aplikacje komunikują się z danymi zdrowotnymi.
  • Typy danych dzielą się na ilościowe HKQuantityType i kategoryczne HKCategoryType.
  • Poufność — każda aplikacja osobno prosi o pozwolenie na odczyt i zapis dla każdego typu danych.
  • Apple Watch automatycznie przesyła dane o aktywności, tętnie i treningach do HealthKit.

Co to jest HealthKit?

HealthKit to framework Apple zaprezentowany w 2014 roku wraz z iOS 8, przeznaczony do scentralizowanego zarządzania danymi o zdrowiu i aktywności fizycznej użytkownika. Platforma pełni rolę jednolitego repozytorium, do którego aplikacje i urządzenia mogą zapisywać i z którego mogą odczytywać informacje medyczne.

W przeciwieństwie do rozwiązań firm trzecich, HealthKit jest wbudowany bezpośrednio w system operacyjny iOS, co zapewnia wysoką wydajność i bezpieczeństwo na poziomie sprzętowym. Aplikacje nie mają bezpośredniego dostępu do siebie nawzajem — wszystkie operacje przechodzą przez centralny HKHealthStore.

Według Apple WWDC 2024, ponad 87% użytkowników iPhone w USA przynajmniej raz użyło wbudowanej aplikacji Zdrowie, która opiera się właśnie na HealthKit. Ekosystem obejmuje tysiące aplikacji firm trzecich — od trackerów fitness po usługi telemedyczne.

Architektura HealthKit

Architektura HealthKit jest zbudowana na zasadzie wielopoziomowego magazynu z izolowanymi kontenerami dla każdego źródła danych. Na dolnym poziomie znajduje się baza danych SQLite, szyfrowana za pomocą sprzętowego AES-256. Na górnym poziomie znajduje się HKHealthStore — jednolity interfejs komunikacji.

Każdy rekord zawiera metadane: źródło HKSource, urządzenie HKDevice, datę, czas i flagę synchronizacji z iCloud. System automatycznie deduplikuje powtarzające się wpisy z jednego źródła, zapobiegając zniekształceniu statystyk.

Dane są grupowane według typów — HKQuantityType dla wskaźników liczbowych (tętno, kroki, kalorie) i HKCategoryType dla zdarzeń kategorycznych (sen, objawy, cykl menstruacyjny). Taka struktura umożliwia elastyczne zapytania o dowolne kombinacje parametrów przez HKSampleQuery lub HKStatisticsQuery.

Typy danych w HealthKit

HealthKit obsługuje ponad 100 znormalizowanych typów danych, podzielonych na kategorie: aktywność fizyczna, odżywianie, sen, układ sercowo-naczyniowy, zdrowie reprodukcyjne, parametry laboratoryjne i wskaźniki życiowe. Każdy typ ma jednostkę miary HKUnit i poziom dostępu.

Deweloper może również tworzyć niestandardowe korelacje przez HKCorrelation — grupę powiązanych pomiarów. Na przykład wpis o posiłku może zawierać kaloryczność, białka, tłuszcze i węglowodany jako jeden obiekt. Do pomiarów sekwencyjnych, takich jak poziom glukozy, używa się HKSeriesSample.

Praca z HealthKit rozpoczyna się od określenia HKHealthStore — singletona, który jest automatycznie tworzony przy imporcie frameworka. Za pośrednictwem store aplikacja sprawdza, czy platforma jest dostępna na urządzeniu, ponieważ na iPad i iPod touch wsparcie może być nieobecne. Należy również pamiętać, że HealthKit jest niedostępny na Mac Catalyst — dla macOS wymagana jest osobna implementacja.

swift
import HealthKit

let healthStore = HKHealthStore()

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

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

let typesToRead: Set = [stepType, heartRateType]

Jak działa HealthKit

HealthKit działa jako pośrednik między źródłami danych a aplikacjami, używając asynchronicznego modelu publikacji-subskrypcji. Aplikacja-źródło zapisuje dane przez HKHealthStore, a aplikacje-subskrybenci otrzymują powiadomienia o nowych wpisach przez HKObserverQuery, uruchamiany w tle.

Framework obsługuje synchronizację w tle przez iCloud: jeśli użytkownik jest zalogowany, HealthKit automatycznie rozpowszechnia dane na wszystkie urządzenia Apple w czasie rzeczywistym. W przypadku braku sieci zmiany są buforowane lokalnie i synchronizowane po przywróceniu połączenia bez utraty danych.

Według Apple, opóźnienie synchronizacji między iPhone a Apple Watch wynosi mniej niż 30 sekund dla danych o aktywności. Dla innych typów — sen, odżywianie, parametry laboratoryjne — synchronizacja odbywa się według harmonogramu z interwałem do 15 minut, aby oszczędzać baterię.

HKHealthStore i operacje na danych

HKHealthStore — centralny singleton, przez który wykonywane są wszystkie operacje: zapis przez saveObject, odczyt przez execute i usunięcie przez deleteObject. Każda operacja jest asynchroniczna i zwraca wynik przez zamknięcie, co wymaga prawidłowej obsługi błędów.

Zapytania dzielą się na kilka typów: HKSampleQuery do pobierania rekordów według kryteriów, HKStatisticsQuery do danych zagregowanych — suma, średnia, minimum, maksimum — oraz HKObserverQuery do śledzenia zmian w czasie rzeczywistym. Do okresowych aktualizacji w tle używa się HKHeartbeatSeriesQuery.

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)

Integracja HealthKit w aplikacji

Integracja HealthKit rozpoczyna się od włączenia capability HealthKit w Xcode i dodania entitlement do projektu. Następnie aplikacja prosi o pozwolenia dostępu do konkretnych typów danych przez wywołanie requestAuthorization. Ważne: HealthKit jest niedostępny na symulatorze i wymaga fizycznego urządzenia z iOS.

Proces integracji obejmuje trzy etapy: określenie typów danych, żądanie autoryzacji i wykonywanie operacji odczytu i zapisu. Każdy etap jest asynchroniczny i powinien obsługiwać błędy — użytkownik może odrzucić żądanie dostępu do dowolnego typu danych w systemowym oknie dialogowym z przełącznikami.

Według badań Apple, aplikacje z integracją HealthKit wykazują o 40% wyższy poziom zaangażowania użytkowników. Kluczowym czynnikiem sukcesu jest wyjaśnienie, dlaczego aplikacja potrzebuje konkretnych danych o zdrowiu, w opisie żądania autoryzacji.

Żądanie autoryzacji

Żądanie autoryzacji jest wykonywane raz przy pierwszym uruchomieniu. Aplikacja określa dwa zestawy typów — do odczytu i do zapisu. Użytkownik widzi systemowe okno dialogowe z przełącznikami dla każdego typu danych i może udzielić dostępu wybiórczo, blokując niepotrzebne kategorie.

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("Autoryzacja uzyskana")
    }
}

Bezpieczeństwo HealthKit

HealthKit realizuje wielopoziomowy model bezpieczeństwa, obejmujący sprzętowe szyfrowanie, piaskownicę aplikacji i szczegółowe uprawnienia. Wszystkie dane zdrowotne są przechowywane w zaszyfrowanej formie na urządzeniu i nie są przesyłane do iCloud bez osobnej zgody użytkownika, która jest wymagana jednorazowo.

Kluczowa cecha — mechanizm Intent: aplikacja nie ma stałego dostępu w tle do danych. Każde żądanie odczytu lub zapisu jest sprawdzane przez system operacyjny, a użytkownik może w dowolnym momencie cofnąć pozwolenie przez Ustawienia — Prywatność — Zdrowie bez konieczności ponownej instalacji aplikacji.

Apple ściśle reguluje używanie HealthKit w App Store Review Guidelines. Aplikacja nie może przekazywać danych HealthKit stronom trzecim bez wyraźnej zgody, nie może używać ich do reklamy ani targetowania i nie może przechowywać ich dłużej, niż jest to konieczne do zadeklarowanej funkcjonalności.

Limity i ograniczenia

HealthKit ma szereg ograniczeń: maksymalny rozmiar bazy danych na urządzeniu — 1 GB, limit liczby rekordów w jednym zapytaniu — 1000, minimalny odstęp między identycznymi typami danych — 1 sekunda. Framework ogranicza również aktualizacje w tle — nie więcej niż 60 uruchomień HKObserverQuery na dobę.

Te ograniczenia są kompensowane wydajnością: odczyt 1000 rekordów odbywa się średnio w 50–100 milisekund, a zapis jednego rekordu zajmuje mniej niż 10 milisekund. Dla dużych ilości danych zaleca się używanie HKStatisticsCollectionQuery z wstępną agregacją, a nie pobieranie pojedynczych rekordów. HealthKit przetwarza zapytania asynchronicznie — aplikacja nie blokuje się podczas oczekiwania na dane z HKHealthStore.

Często zadawane pytania

Które urządzenia obsługują HealthKit?

HealthKit jest obsługiwany na wszystkich urządzeniach z iOS 8 i nowszymi, w tym iPhone, iPad i iPod touch. Apple Watch automatycznie przesyła dane przez sparowany iPhone. Urządzenia firm trzecich — opaski fitness, wagi, monitory ciśnienia — mogą zapisywać dane przez HealthKit API za pośrednictwem odpowiedniej aplikacji.

Czy można eksportować dane z HealthKit?

Tak, aplikacja Zdrowie umożliwia eksport wszystkich danych w formacie XML przez funkcję „Eksport danych zdrowotnych”. Deweloperzy mogą programowo odczytywać dowolne dozwolone typy przez HKSampleQuery i eksportować do swojego formatu. Dane o zdrowiu nie mogą być przesyłane na serwery firm trzecich bez wyraźnej zgody użytkownika.

Jak HealthKit obsługuje usuwanie danych?

Użytkownik może usunąć dane przez aplikację Zdrowie lub przez aplikację-źródło, która je zapisała. Po usunięciu dane nie są przywracane — HealthKit nie ma kosza. Operacja usunięcia jest nieodwracalna, dlatego aplikacjom zaleca się proszenie o potwierdzenie przed wykonaniem deleteObject.

Czym różni się HealthKit od ResearchKit?

HealthKit jest przeznaczony do przechowywania i wymiany danych o zdrowiu użytkownika, podczas gdy ResearchKit to framework do prowadzenia badań medycznych. ResearchKit używa HealthKit jako jednego ze źródeł danych, ale dodaje moduły świadomej zgody, kwestionariuszy i aktywnych zadań do zbierania danych badawczych.

Czy potrzebne jest specjalne pozwolenie dla HealthKit w App Store?

Tak, aplikacje używające HealthKit muszą spełniać App Store Review Guidelines, sekcja 5.1.1 — Medical and Health Data. Wymagany jest jasny opis użycia danych w aplikacji, polityka prywatności, zakaz reklamowego wykorzystania danych i szyfrowanie podczas przesyłania przez sieć.

Podsumowanie

  • HealthKit — standardowy framework Apple do zarządzania danymi o zdrowiu w iOS, zaprezentowany w 2014 roku.
  • HKHealthStore — centralny interfejs do wszystkich operacji: zapisywania, odczytu i usuwania danych zdrowotnych.
  • Platforma obsługuje ponad 100 typów danych — od aktywności fizycznej po analizy laboratoryjne.
  • Poufność danych jest zapewniona przez sprzętowe szyfrowanie AES-256 i szczegółowe uprawnienia.
  • Synchronizacja między urządzeniami Apple odbywa się przez iCloud z opóźnieniem poniżej 30 sekund.
  • Integracja wymaga skonfigurowania entitlement w Xcode i obowiązkowego żądania autoryzacji od użytkownika.
  • Bezpieczeństwo HealthKit jest kontrolowane przez systemowe ustawienia prywatności i zasady App Store.

Opracujemy aplikację mobilną pod klucz

IT Sectr tworzy aplikacje na iOS i Androida dla startupów i firm od 2017 roku. Doradzimy Ci i zaproponujemy najlepsze rozwiązanie.

Omów projekt

Przeczytaj również