Framework HealthKit je centrální komponentou ekosystému zdraví Apple, který agreguje data z iPhone, Apple Watch a zařízení třetích stran v chráněném lokálním úložišti. Podle Apple Developer Documentation, 2025 platforma podporuje více než 100 typů dat — od fyzické aktivity a spánku až po laboratorní analýzy a ukazatele kardiovaskulárního systému. Jednotné úložiště lékařských informací zajišťuje bezproblémovou synchronizaci mezi aplikacemi s granulární kontrolou přístupu pro každý typ dat.
Hlavní body
HealthKit je Apple framework představený v roce 2014 spolu s iOS 8, určený k centrální správě dat o zdraví a fyzické aktivitě uživatele. Platforma slouží jako jednotný repozitář, do kterého mohou aplikace a zařízení zapisovat a ze kterého mohou číst lékařské informace.
Na rozdíl od řešení třetích stran je HealthKit přímo integrován do operačního systému iOS, což zajišťuje vysoký výkon a bezpečnost na hardwarové úrovni. Aplikace nemají přímý přístup jedna k druhé — všechny operace procházejí centrálním HKHealthStore.
Podle Apple WWDC 2024 více než 87 % uživatelů iPhone v USA alespoň jednou použilo vestavěnou aplikaci Zdraví, která je založena právě na HealthKit. Ekosystém zahrnuje tisíce aplikací třetích stran — od fitness trackerů až po telemedicínské služby.
Architektura HealthKit je postavena na principu víceúrovňového úložiště s izolovanými kontejnery pro každý zdroj dat. Na nižší úrovni se nachází databáze SQLite, šifrovaná hardwarovým AES-256. Na vyšší úrovni se nachází HKHealthStore — jednotné rozhraní pro interakci.
Každý záznam obsahuje metadata: zdroj HKSource, zařízení HKDevice, datum, čas a příznak synchronizace z iCloud. Systém automaticky deduplikuje duplicitní záznamy ze stejného zdroje, čímž zabraňuje zkreslení statistik.
Data jsou seskupena podle typů — HKQuantityType pro numerické ukazatele (tep, kroky, kalorie) a HKCategoryType pro kategorické události (spánek, příznaky, menstruační cyklus). Tato struktura umožňuje flexibilní dotazování na libovolné kombinace parametrů prostřednictvím HKSampleQuery nebo HKStatisticsQuery.
HealthKit podporuje více než 100 standardizovaných typů dat rozdělených do kategorií: fyzická aktivita, výživa, spánek, kardiovaskulární systém, reprodukční zdraví, laboratorní parametry a vitální funkce. Každý typ má měrnou jednotku HKUnit a úroveň přístupu.
Vývojář může také vytvářet vlastní korelace prostřednictvím HKCorrelation — skupinu souvisejících měření. Například záznam o jídle může obsahovat kalorie, bílkoviny, tuky a sacharidy jako jeden objekt. Pro sekvenční měření, jako je hladina glukózy, se používá HKSeriesSample.
Práce s HealthKit začíná definováním HKHealthStore — singletonu, který se automaticky vytvoří při importu frameworku. Prostřednictvím store aplikace kontroluje, zda je platforma na zařízení dostupná, protože na iPad a iPod touch může podpora chybět. Je také důležité si uvědomit, že HealthKit není k dispozici na Mac Catalyst — pro macOS je vyžadována samostatná implementace.
import HealthKit
let healthStore = HKHealthStore()
let stepType = HKQuantityType
.quantityType(forIdentifier: .stepCount)
let heartRateType = HKQuantityType
.quantityType(forIdentifier: .heartRate)
let typesToRead: Set = [stepType, heartRateType]
HealthKit funguje jako prostředník mezi zdroji dat a aplikacemi, přičemž používá asynchronní model publikování-předplacení. Zdrojová aplikace zapisuje data prostřednictvím HKHealthStore a předplacené aplikace dostávají oznámení o nových záznamech prostřednictvím HKObserverQuery běžícího na pozadí.
Framework podporuje synchronizaci na pozadí prostřednictvím iCloud: pokud je uživatel přihlášen, HealthKit automaticky distribuuje data na všechna zařízení Apple v reálném čase. Při absenci sítě se změny lokálně ukládají do vyrovnávací paměti a synchronizují se po obnovení spojení bez ztráty dat.
Podle Apple je zpoždění synchronizace mezi iPhone a Apple Watch kratší než 30 sekund pro data o aktivitě. Pro ostatní typy — spánek, výživa, laboratorní parametry — synchronizace probíhá podle plánu s intervalem až 15 minut pro šetření baterie.
HKHealthStore — centrální singleton, prostřednictvím kterého se provádějí všechny operace: ukládání pomocí saveObject, čtení pomocí execute a mazání pomocí deleteObject. Každá operace je asynchronní a vrací výsledek prostřednictvím closure, což vyžaduje správné zpracování chyb.
Dotazy se dělí do několika typů: HKSampleQuery pro výběr záznamů podle kritérií, HKStatisticsQuery pro agregovaná data — součet, průměr, minimum, maximum — a HKObserverQuery pro sledování změn v reálném čase. Pro periodické aktualizace na pozadí se používá HKHeartbeatSeriesQuery.
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)
Integrace HealthKit začíná povolením capability HealthKit v Xcode a přidáním entitlement do projektu. Poté aplikace žádá o přístupová oprávnění ke konkrétním typům dat prostřednictvím volání requestAuthorization. Důležité: HealthKit není k dispozici na simulátoru a vyžaduje fyzické zařízení s iOS.
Proces integrace zahrnuje tři fáze: definování typů dat, žádost o autorizaci a provádění operací čtení a zápisu. Každá fáze je asynchronní a musí zpracovávat chyby — uživatel může odmítnout žádost o přístup k jakémkoli typu dat v systémovém dialogovém okně s přepínači.
Podle výzkumu Apple vykazují aplikace s integrací HealthKit o 40 % vyšší míru zapojení uživatelů. Klíčovým faktorem úspěchu je vysvětlení, proč aplikace potřebuje konkrétní zdravotní data v popisu žádosti o autorizaci.
Žádost o autorizaci se provádí jednou při prvním spuštění. Aplikace určuje dvě sady typů — pro čtení a pro zápis. Uživatel vidí systémové dialogové okno s přepínači pro každý typ dat a může přístup udělit selektivně, zakázáním nepotřebných kategorií.
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("Autorizace získána")
}
}
HealthKit implementuje víceúrovňový bezpečnostní model zahrnující hardwarové šifrování, sandbox aplikací a granulární oprávnění. Všechna zdravotní data jsou ukládána šifrovaně na zařízení a nejsou přenášena do iCloud bez zvláštního souhlasu uživatele, který je vyžadován jednou.
Klíčová vlastnost — mechanismus Intent: aplikace nemá trvalý přístup na pozadí k datům. Každý požadavek na čtení nebo zápis je kontrolován operačním systémem a uživatel může kdykoli odvolat oprávnění prostřednictvím Nastavení — Soukromí — Zdraví bez nutnosti přeinstalování aplikace.
Apple přísně reguluje používání HealthKit v App Store Review Guidelines. Aplikace nesmí předávat data HealthKit třetím stranám bez výslovného souhlasu, nesmí je používat pro reklamu nebo cílení a nesmí je uchovávat déle, než je nutné pro deklarovanou funkčnost.
HealthKit má řadu omezení: maximální velikost databáze na zařízení — 1 GB, limit počtu záznamů v jednom dotazu — 1000, minimální interval mezi identickými typy dat — 1 sekunda. Framework také omezuje aktualizace na pozadí — ne více než 60 spuštění HKObserverQuery denně.
Tato omezení jsou kompenzována výkonem: čtení 1000 záznamů trvá v průměru 50–100 milisekund a zápis jednoho záznamu trvá méně než 10 milisekund. Pro velké objemy dat se doporučuje použít HKStatisticsCollectionQuery s předběžnou agregací místo výběru jednotlivých záznamů. HealthKit zpracovává dotazy asynchronně — aplikace není blokována během čekání na data z HKHealthStore.
Často kladené otázky
HealthKit je podporován na všech zařízeních s iOS 8 a novějším, včetně iPhone, iPad a iPod touch. Apple Watch automaticky přenášejí data prostřednictvím spárovaného iPhone. Zařízení třetích stran — fitness náramky, váhy, monitory tlaku — mohou zapisovat data prostřednictvím HealthKit API, pokud mají odpovídající aplikaci.
Ano, aplikace Zdraví umožňuje exportovat všechna data ve formátu XML prostřednictvím funkce „Exportovat zdravotní data”. Vývojáři mohou programově číst jakékoli povolené typy prostřednictvím HKSampleQuery a exportovat je do svého formátu. Zdravotní data nelze přenášet na servery třetích stran bez výslovného souhlasu uživatele.
Uživatel může smazat data prostřednictvím aplikace Zdraví nebo prostřednictvím zdrojové aplikace, která je zaznamenala. Po smazání nelze data obnovit — HealthKit nemá koš. Operace smazání je nevratná, proto se aplikacím doporučuje žádat o potvrzení před provedením deleteObject.
HealthKit je určen pro ukládání a výměnu zdravotních dat uživatele, zatímco ResearchKit je framework pro provádění lékařského výzkumu. ResearchKit používá HealthKit jako jeden ze zdrojů dat, ale přidává moduly informovaného souhlasu, dotazníků a aktivních úkolů pro sběr výzkumných dat.
Ano, aplikace používající HealthKit musí splňovat App Store Review Guidelines, sekci 5.1.1 — Medical and Health Data. Je vyžadován jasný popis použití dat v aplikaci, zásady ochrany osobních údajů, zákaz reklamního využití dat a šifrování při přenosu po síti.
Shrnutí
Vyvineme mobilní aplikaci na klíč
IT Sectr vytváří aplikace pro iOS a Android pro startupy a podniky od roku 2017. Poradíme vám a navrhneme nejlepší řešení.
Přečtěte si také